[
  {
    "path": ".gitignore",
    "content": "target/\n!.mvn/wrapper/maven-wrapper.jar\n\n### STS ###\n.apt_generated\n.classpath\n.factorypath\n.project\n.settings\n.springBeans\n\n### IntelliJ IDEA ###\n.idea\n*.iws\n*.iml\n*.ipr\n\n### NetBeans ###\nnbproject/private/\nnbbuild/\ndist/\nnbdist/\n\nbin/\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2016 Alibaba Group\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README-ch.md",
    "content": "- [TAC](#tac)\n  - [What is TAC ？](#what-is-tac-%EF%BC%9F)\n  - [Features](#features)\n  - [Why TAC？](#why-tac%EF%BC%9F)\n    - [TAC 之前](#tac-%E4%B9%8B%E5%89%8D)\n    - [TAC 之后](#tac-%E4%B9%8B%E5%90%8E)\n  - [Quick Start](#quick-start)\n    - [安装redis](#%E5%AE%89%E8%A3%85redis)\n    - [运行 container](#%E8%BF%90%E8%A1%8C-container)\n    - [运行 console 控制台](#%E8%BF%90%E8%A1%8C-console-%E6%8E%A7%E5%88%B6%E5%8F%B0)\n    - [代码开发](#%E4%BB%A3%E7%A0%81%E5%BC%80%E5%8F%91)\n    - [本地编译、打包](#%E6%9C%AC%E5%9C%B0%E7%BC%96%E8%AF%91%E3%80%81%E6%89%93%E5%8C%85)\n    - [预发布](#%E9%A2%84%E5%8F%91%E5%B8%83)\n    - [正式发布](#%E6%AD%A3%E5%BC%8F%E5%8F%91%E5%B8%83)\n  - [启动配置参数](#%E5%90%AF%E5%8A%A8%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0)\n  - [接入你自己的数据源](#%E6%8E%A5%E5%85%A5%E4%BD%A0%E8%87%AA%E5%B7%B1%E7%9A%84%E6%95%B0%E6%8D%AE%E6%BA%90)\n\n# TAC\n\n## What is TAC ？\n\n* TAC (Tiny API Cloud ) 是与 tangram 配套的服务端解决方案。当然也支持脱离 tangram 使用；\n* TAC 不是平台，也不是框架，而是一种开发模式；\n\n## Features\n\n* 快速发布；\n* 无需部署；\n* 灵活修改；\n* 快速添加数据源；\n* 客户端开发人员直接参与服务端逻辑；\n\n## Why TAC？\n\n### TAC 之前\n\n* 在 TAC 诞生之前，天猫 app 大多数页面服务端的开发模式是这样的 。以首页为例：\n  * 1.客户端与服务端同学约定接口数据类型，字段；\n  * 2.服务端提供 mock 接口，两端并行开发；\n  * 3.测试、部署、发布。\n* 这种模式的弊端在于，由于页面依赖了各种数据源，发布是一个漫长的过程，如果遇到字段修改，整个应用重新编译、打包部署流程太长；不同的页面部署在不同的应用中，无法共享数据源\n\n### TAC 之后\n\n* TAC 接入各个常用数据源；\n* 客户端同学直接在 TAC 上提交源码，编译、测试、并发布生效；\n* 客户端页面开发不需要服务端同学参与，免去沟通过程；\n* 服务端同学专注开发业务逻辑；\n\n![tac流程](docs/imgs/tac1.png)\n\n## Quick Start\n\n### 安装[redis](https://redis.io/)\n\n### 运行 container\n\n```\njava -jar tac-container.jar\n```\n\n### 运行 console 控制台\n\n```\njava -jar tac-console.jar --admin\n```\n\n* 成功后可打开控制台\n\n```\nhttp://localhost:7001/#/tacMs/list\n```\n\n### 代码开发\n\n* 仓库地址 [oss.sonatype.org](https://oss.sonatype.org/#nexus-search;quick~tac-sdk)\n* 添加 SDK 依赖\n\n```\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>tac-sdk</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n```\n\n* 编写代码\n\n```java\npublic class HelloWorldTac implements TacHandler<Object> {\n\n    /**\n     * 引入日志服务\n     */\n    private TacLogger tacLogger = TacInfrasFactory.getLogger();\n\n    /**\n     * 编写一个实现TacHandler接口的类\n     *\n     * @param context\n     * @return\n     * @throws Exception\n     */\n\n    @Override\n    public TacResult<Object> execute(Context context) throws Exception {\n\n        // 执行逻辑\n        tacLogger.info(\"Hello World\");\n\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"name\", \"hellotac\");\n        data.put(\"platform\", \"iPhone\");\n        data.put(\"clientVersion\", \"7.0.2\");\n        data.put(\"userName\", \"tac-userName\");\n        return TacResult.newResult(data);\n    }\n}\n```\n\n### 本地编译、打包\n\n```bash\ncd tac-dev-source\njava -jar tac-console.jar --package --msCode=helloworld\n```\n\n![](docs/imgs/tac-package.png)\n\n### 预发布\n\n* 预发布\n\n* 测试预发布\n\n![](docs/imgs/pre-test.png)\n\n### 正式发布\n\n* 线上验证\n\n```\ncurl  http://localhost:8001/api/tac/execute/helloworld -s|json\n```\n\n* 结果\n\n```json\n{\n  \"success\": true,\n  \"msgCode\": null,\n  \"msgInfo\": null,\n  \"data\": {\n    \"helloworld\": {\n      \"data\": {\n        \"name\": \"hellotac\",\n        \"clientVersion\": \"7.0.2\",\n        \"userName\": \"tac-userName\",\n        \"platform\": \"iPhone\"\n      },\n      \"success\": true,\n      \"msCode\": \"helloworld\"\n    }\n  },\n  \"hasMore\": null,\n  \"ip\": \"127.0.0.1\"\n}\n```\n\n## [启动配置参数](/docs/configs.md)\n\n## [接入你自己的数据源](/docs/custom_data_source.md)\n\n## [与gitlab集成](/docs/gitlab.md)\n\n## [IDE源码启动——quickstart](/docs/ide_source_start.md)\n"
  },
  {
    "path": "README.md",
    "content": "\n\n* [TAC](#tac)\n  * [What is TAC ？](#what-is-tac-%EF%BC%9F)\n  * [Features](#features)\n  * [Why TAC？](#why-tac%EF%BC%9F)\n    * [Before TAC](#before-tac)\n    * [After TAC](#after-tac)\n  * [Quick Start](#quick-start)\n    * [Install redis](#install-redis)\n    * [Run container](#run-container)\n    * [Run console](#run-console)\n    * [Code Develop](#code-develop)\n    * [compile and package](#compile-and-package)\n    * [Pre-Publish](#pre-publish)\n    * [Online-Publish](#online-publish)\n  * [The start params config](#the-start-params-config)\n  * [Add your own datasource](#add-your-own-datasource)\n  \n# [中文文档](README-ch.md)\n\n# TAC\n\n## What is TAC ？\n\n+ The TAC (Tiny API Cloud) is a server-side solution with tangram. Of course, it also supports the use of secession from tangram; TAC is not a platform, nor a framework, but a development model.\n\n## Features\n\n* Quick publish;\n* Without deploy;\n* Flexible modification\n* Quickly add data sources\n* Client developers directly participate in server-side logic;\n\n## Why TAC？\n\n### Before TAC\n\n* Before the birth of TAC, the development mode of most app server-side on Tmall app was like this. Take the home page as an example:\n  * Client and server developer discuss the interface data types, fields;\n  * The server developer provides a mock interface with parallel development at both ends.\n  * Test, deploy, release.\n\n- The disadvantage of this model is that since the page relies on various data sources, publishing is a long process. If the field is modified, the entire application will be recompiled and packaged. The deployment process is too long; different pages are deployed in different applications. unable to share data source\n\n### After TAC\n\n* TAC access to various commonly used data sources;\n* Clients submit source code directly on TAC, compile, test, and publish;\n* Client development does not require the participation of server-side developer, eliminating the need for communication.\n* Server-side developer focus on developing business logic;\n\n![tac develop progress](docs/imgs/tac1-en.png)\n\n## Quick Start\n\n### Install [redis](https://redis.io/)\n\n### Run container\n\n```\njava -jar tac-container.jar\n```\n\n### Run console\n\n```\njava -jar tac-console.jar --admin\n```\n\n* open console when succes\n\n```\nhttp://localhost:7001/#/tacMs/list\n```\n\n### Code Develop\n\n* Repo Address [oss.sonatype.org](https://oss.sonatype.org/#nexus-search;quick~tac-sdk)\n* Add SDK Dependency\n\n```\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>tac-sdk</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n```\n\n* Write your code\n\n```java\npublic class HelloWorldTac implements TacHandler<Object> {\n\n    /**\n     * 引入日志服务\n     */\n    private TacLogger tacLogger = TacInfrasFactory.getLogger();\n\n    /**\n     * 编写一个实现TacHandler接口的类\n     *\n     * @param context\n     * @return\n     * @throws Exception\n     */\n\n    @Override\n    public TacResult<Object> execute(Context context) throws Exception {\n\n        // 执行逻辑\n        tacLogger.info(\"Hello World\");\n\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"name\", \"hellotac\");\n        data.put(\"platform\", \"iPhone\");\n        data.put(\"clientVersion\", \"7.0.2\");\n        data.put(\"userName\", \"tac-userName\");\n        return TacResult.newResult(data);\n    }\n}\n```\n\n### compile and package\n\n```bash\ncd tac-dev-source\njava -jar tac-console.jar --package --msCode=helloworld\n```\n\n![](docs/imgs/tac-package.png)\n\n### Pre-Publish\n\n* Pre-Publish\n\n* Test-Pre-Publish\n\n![](docs/imgs/pre-test.png)\n\n### Online-Publish\n\n* online check\n\n```\ncurl  http://localhost:8001/api/tac/execute/helloworld -s|json\n```\n\n* Result\n\n```json\n{\n  \"success\": true,\n  \"msgCode\": null,\n  \"msgInfo\": null,\n  \"data\": {\n    \"helloworld\": {\n      \"data\": {\n        \"name\": \"hellotac\",\n        \"clientVersion\": \"7.0.2\",\n        \"userName\": \"tac-userName\",\n        \"platform\": \"iPhone\"\n      },\n      \"success\": true,\n      \"msCode\": \"helloworld\"\n    }\n  },\n  \"hasMore\": null,\n  \"ip\": \"127.0.0.1\"\n}\n```\n\n## [The start params config](/docs/configs.md)\n\n## [Add your own datasource](/docs/custom_data_source.md)\n\n## [Use with gitlab](/docs/gitlab.md)"
  },
  {
    "path": "docs/arch_design.md",
    "content": ""
  },
  {
    "path": "docs/configs.md",
    "content": "# TAC 配置\n\n* TAC 使用 springboot 构建，可是用 springboot 的标准配置文件来替换其默认配置；\n* 如 启动参数 --spring.config.location=file:/override.properties\n\n## 通用配置\n\n```properties\n# http 服务器端口\n\nserver.port=8001\n\n# endpoint 配置\n\nmanagement.port=8002\n\n# 使用的存储 redis\ntac.default.store=redis\n\n# 扩展点扫描的包名 逗号分隔\nscan.package.name=com.tmall.tac.test\n\n# 扩展jar包路径\ntac.extend.lib=extendlibs\n\n# 日志路径\nlogging.config=classpath:tac/default-logback-spring.xml\n\n\n# 编译相关\n\n# 参考类 TacDataPathProperties\n# 编译结果路径 默认值 不建议修改\ntac.data.path.outputPathPrefix=${user.home}/tac/data/classes\n\n# 运行时加载的类路径  不建议修改\ntac.data.path.classLoadPathPrefix=${user.home}/tac/data/ms\n\n# 编译代码的包名 修改成自定义包名\ntac.data.path.pkgPrefix=com.alibaba.tac.biz;\n\n# redis存储相关配置 参考类 TacRedisConfigProperties  以下配置不建议修改\n# msInst元数据路径\ntac.redis.config.msInstMetaDataPath=com.alibaba.tac.msInstMetaData\n# ms元数据路径\ntac.redis.config.msMetaDataPath=com.alibaba.tac.msMetaData\n\n# 数据路径的前缀\ntac.redis.config.dataPathPrefix=msInstFile\n\n\n# 服务列表的路径\ntac.redis.config.msListPath=msPublishedList\n\n# 发布时候订阅的channel\ntac.redis.config.publishEventChannel=tac.inst.publish.channel\n\n\n\n```\n\n## \btac-console 配置\n\n```properties\n# tac-container的http接口 在线上验证时使用\ntac.container.web.api=http://localhost:8001/api/tac/execute\n```\n\n\n## gitlab配置\n\n```properties\n# gitlab服务器地址\ntac.gitlab.config.hostURL=http://127.0.0.1\n\n# gitlab帐号token\ntac.gitlab.config.token=xxxxx\n\n# gitlab仓库groupName\ntac.gitlab.config.groupName=tac-admin\n\n\n# gitlab仓库帐号名\ntac.gitlab.config.userName=tac-admin\n\n# gitlab仓库帐号密码\ntac.gitlab.config.password=tac-admin\n\n\n# gitlab代码下载存储路径 （各微服务代码会下载到这个路径下）\ntac.gitlab.config.basePath=/home/admin/tac/git_codes\n```"
  },
  {
    "path": "docs/custom_data_source.md",
    "content": "## 接入你自己的数据源\n\n* 以下以 idea 为例，描述 tac 源码级别添加数据源步骤\n\n### 代码拉取\n\n```\ngit clone git@github.com:alibaba/tac.git\n```\n\n###\n\n### 打开工程\n\n* 为了方便大家理解，demo 模块加了 demo 字样；\n* 在这里我们添加天猫商品服务(当然是 mock 的)\n\n![image.png | left | 827x406](imgs/sourcestart/1527908670979-41bc49e4-bee3-422b-9898-0089dfc9e3b8.png)\n\n```java\npackage com.alibaba.tac.infrastracture.demo.itemcenter;\n\nimport org.springframework.stereotype.Service;\n\n/**\n *\n */\n@Service\npublic class TmallItemService {\n\n    /**\n     * get a item\n     *\n     * @param id\n     * @return\n     */\n    public ItemDO getItem(Long id) {\n\n        // mock data  这里可以进行PRC、HTTP 调用  和自己的业务系统交互\n        return new ItemDO(id, \"A Song of Ice and Fire\", \"￥222.00\");\n    }\n\n}\n```\n\n### 安装 jar 包到本地仓库\n\n```plain\nmvn clean -Dmaven.test.skip=true package install\n```\n\n### 在微服务里引用新的数据源\n\n* 在 仍然以 tac-dev-source 为例 【注意】在新的 pom 文件中引入了刚刚打包的 jar 包 tac-custom-datasource-demo\n\n![image.png | left | 827x339](imgs/sourcestart/1527908958075-f5f22b21-87c0-4850-ac9e-2d48b6f8f4ca.png)\n\n* 实例代码\n\n```java\npackage com.alibaba.tac.biz.processor;\n\nimport com.alibaba.tac.sdk.common.TacResult;\nimport com.alibaba.tac.sdk.domain.Context;\nimport com.alibaba.tac.sdk.factory.TacInfrasFactory;\nimport com.alibaba.tac.sdk.handler.TacHandler;\nimport com.alibaba.tac.sdk.infrastracture.TacLogger;\nimport com.tmall.itemcenter.ItemDO;\nimport com.tmall.itemcenter.TmallItemService;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * @author jinshuan.li\n */\npublic class HelloWorldTac implements TacHandler<Object> {\n\n    /**\n     * get the logger service\n     */\n    private TacLogger tacLogger = TacInfrasFactory.getLogger();\n\n    private TmallItemService tmallItemService = TacInfrasFactory.getServiceBean(TmallItemService.class);\n\n    /**\n     * implement a class which implements TacHandler interface {@link TacHandler}\n     *\n     * @param context\n     * @return\n     * @throws Exception\n     */\n\n    @Override\n    public TacResult<Object> execute(Context context) throws Exception {\n\n        // the code\n        tacLogger.info(\"Hello World22\");\n\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"name\", \"hellotac\");\n        data.put(\"platform\", \"iPhone\");\n        data.put(\"clientVersion\", \"7.0.2\");\n        data.put(\"userName\", \"tac-userName\");\n\n        ItemDO item = tmallItemService.getItem(1L);\n        data.put(\"item\", item);\n        return TacResult.newResult(data);\n    }\n}\n```\n\n### 从 IDEA 源码运行\n\n* 在 tac-infrastructure 的 pom 文件中加入依赖 (理论上来说任意一个 pom 都行，保证在 classpath 里)\n\n```xml\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>tac-custom-datasource-demo</artifactId>\n            <version>0.0.4-SNAPSHOT</version>\n        </dependency>\n```\n\n![image.png | left | 827x298](imgs/sourcestart/1527909372611-d351cd8b-2429-4d3f-8ea9-e2dd1e172759.png)\n\n* 修改加载路径，让新的 bean 能改被加载\n\n![image.png | left | 799x289](imgs/sourcestart/1527909790663-00749a83-9d99-43a1-a08c-3e2df8060507.png)\n\n* 源码启动 console [参考](ide_source_start.md)\n\n* 像打包 helloworld 一样打包新实例代码   mvn clean -Dmaven.test.skip=true package\n\n* 正常预发布测试\n\n![image.png | left | 827x284](imgs/sourcestart/1527909925642-7c07329e-2a63-436e-8403-5a1bc87639a3.png)\n\n### 从 Jar 包执行\n\n* 为了实现对源码无侵入，tac 改造了 classloader 的顺序以支持从外部加载数据源的 jar 包；\n* 只需将数据源 jar 包放入 extendlibs 中即可\n\n![image.png | left | 827x276](imgs/sourcestart/1527910365188-43a1a4c3-fb9b-4fa5-bbbb-3f7f514fc1b9.png)\n\n![image.png | left | 766x296](imgs/sourcestart/1527910444921-c5c32034-e174-431a-b7c8-59077c11577b.png)\n\n* 运行 java -jar tac-console-0.0.4.jar --admin\n"
  },
  {
    "path": "docs/gitlab.md",
    "content": "# 与 gitlab 集成\n\n* 用户可以将 gitlab 与 tac 集成，方便管理微服务；\n\n## Step 1 新建帐号\n\n* tac 使用专门的 gitlab 帐号来管理相关代码；联系对应的 gitlab 服务器管理员，新建名如 tac-admin 的用户，并获取其 api token、userName、password.\n\n## Step 2 tac 启动参数配置\n\n* 在 tac 启动时配置如下参数\n\n```properties\n# gitlab服务器地址\ntac.gitlab.config.hostURL=http://127.0.0.1\n\n# gitlab帐号token\ntac.gitlab.config.token=xxxxx\n\n# gitlab仓库groupName\ntac.gitlab.config.groupName=tac-admin\n\n\n# gitlab仓库帐号名\ntac.gitlab.config.userName=tac-admin\n\n# gitlab仓库帐号密码\ntac.gitlab.config.password=tac-admin\n\n\n# gitlab代码下载存储路径 （各微服务代码会下载到这个路径下）\ntac.gitlab.config.basePath=/home/admin/tac/git_codes\n```\n\n## Step 3 修改微服务的代码仓库地址\n\n* 如下图所示，修改该微服务的仓库地址\n\n![gitlab_repo](imgs/tac-gitlab1.png)\n\n## Step 4 置顶实例分支并发布\n\n![gitlab_repo](imgs/tac-gitlab3.png)\n"
  },
  {
    "path": "docs/ide_source_start.md",
    "content": "# 源码启动详细步骤\n\n* 以下以 idea 为例，描述 tac 源码从 idea 启动步骤\n\n### 代码拉取\n\n```\ngit clone git@github.com:alibaba/tac.git\n```\n\n### 打开工程\n\n* 项目通过 springboot 编写 依赖 jdk1.8\n* 使用了 lombok 包，idea 需要安装 lombok 插件；\n\n![undefined](imgs/sourcestart/1527213111970-6a1b5031-63ef-4082-b602-4493555a40e8.png)\n\n### 安装并启动 redis (本地默认配置)\n\n* ip : 127.0.0.1\n* port : 6379\n\n### 启动 console\n\n* com.alibaba.tac.console.ConsoleApplication 带上 --admin 参数启动\n\n![undefined](imgs/sourcestart/1527213201547-8d16dd54-d32a-4cd9-927a-4ceb509773a6.png)\n\n* 成功后打开控制台 http://localhost:7001/#/tacMs/list\n\n### 新建服务\n\n![undefined](imgs/sourcestart/1527213265713-e0e7611f-b1c2-43bd-8cf5-31dd0d9e9cc6.png)\n\n### 编写代码\n\n* 参考 tac-dev-source\n\n![undefined](imgs/sourcestart/1527213324287-63726690-1df1-45fb-afc6-e931784855d1.png)\n\n```java\npackage com.alibaba.tac.biz.processor;\n\nimport com.alibaba.tac.sdk.common.TacResult;\nimport com.alibaba.tac.sdk.domain.Context;\nimport com.alibaba.tac.sdk.factory.TacInfrasFactory;\nimport com.alibaba.tac.sdk.handler.TacHandler;\nimport com.alibaba.tac.sdk.infrastracture.TacLogger;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * @author jinshuan.li\n */\npublic class HelloWorldTac implements TacHandler<Object> {\n\n    /**\n     * get the logger service\n     */\n    private TacLogger tacLogger = TacInfrasFactory.getLogger();\n\n\n    /**\n     * implement a class which implements TacHandler interface\n     *  {@link TacHandler}\n     * @param context\n     * @return\n     * @throws Exception\n     */\n\n    @Override\n    public TacResult<Object> execute(Context context) throws Exception {\n\n        // the code\n        tacLogger.info(\"Hello World22\");\n\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"name\", \"hellotac\");\n        data.put(\"platform\", \"iPhone\");\n        data.put(\"clientVersion\", \"7.0.2\");\n        data.put(\"userName\", \"tac-userName\");\n\n\n\n        return TacResult.newResult(data);\n    }\n}\n```\n\n### 代码打包\n\n```\ncd tac-dev-source\nmvn clean -Dmaven.test.skip=true package\n```\n\n### 上传 jar 包\n\n![undefined](imgs/sourcestart/1527213524357-bae645a8-d865-472d-a89d-c6660aeade07.png)\n\n### 预发布\n\n### 预发布测试\n\n![undefined](imgs/sourcestart/1527213630237-809d5801-c137-4e53-8709-3d4e772406df.png)\n\n## 正式发布\n\n### 运行\n\n* com.alibaba.tac.container.ContainerApplication\n\n### 控制台操作发布\n\n![undefined](imgs/sourcestart/1527213761239-b3548ce2-6f0d-406d-af8b-1efaf688a45d.png)\n"
  },
  {
    "path": "override.properties",
    "content": "\n\nscan.package.name=com.tmall.itemcenter"
  },
  {
    "path": "pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.alibaba</groupId>\n    <artifactId>tac</artifactId>\n    <version>0.0.4</version>\n    <packaging>pom</packaging>\n\n\n    <modules>\n        <module>tac-sdk</module>\n        <module>tac-console</module>\n        <module>tac-container</module>\n        <module>tac-engine</module>\n        <module>tac-infrastructure</module>\n    </modules>\n\n\n    <name>tac</name>\n    <description>Tangram App Container</description>\n    <url>https://github.com/alibaba/tac</url>\n    <inceptionYear>2018</inceptionYear>\n\n\n    <organization>\n        <name>Alibaba Group</name>\n        <url>https://github.com/alibaba</url>\n    </organization>\n\n    <developers>\n        <developer>\n            <name>ljinshuan</name>\n            <email>ljinshuan@gmail.com</email>\n            <organization>alibaba</organization>\n            <organizationUrl>https://github.com/alibaba</organizationUrl>\n        </developer>\n    </developers>\n\n\n    <scm>\n        <url>https://github.com/alibaba/tac</url>\n        <connection>scm:git:https://github.com/alibaba/tac.git</connection>\n        <developerConnection>scm:git:https://github.com/alibaba/tac.git</developerConnection>\n    </scm>\n\n    <issueManagement>\n        <system>Github Issues</system>\n        <url>https://github.com/alibaba/tac/issues</url>\n    </issueManagement>\n\n    <licenses>\n        <license>\n            <name>The Apache License, Version 2.0</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n        </license>\n    </licenses>\n\n    <parent>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-parent</artifactId>\n        <version>1.4.7.RELEASE</version>\n    </parent>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n        <java.version>1.8</java.version>\n        <jdk.version>1.8</jdk.version>\n        <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>\n        <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>\n    </properties>\n\n    <dependencyManagement>\n        <dependencies>\n\n            <dependency>\n                <groupId>junit</groupId>\n                <artifactId>junit</artifactId>\n                <version>4.12</version>\n                <scope>test</scope>\n            </dependency>\n\n            <!--self start-->\n            <dependency>\n                <groupId>com.alibaba</groupId>\n                <artifactId>tac-console</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>com.alibaba</groupId>\n                <artifactId>tac-container</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>com.alibaba</groupId>\n                <artifactId>tac-engine</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>com.alibaba</groupId>\n                <artifactId>tac-infrastructure</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>com.alibaba</groupId>\n                <artifactId>tac-sdk</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <!--self end-->\n\n            <dependency>\n                <groupId>org.aspectj</groupId>\n                <artifactId>aspectjweaver</artifactId>\n                <version>1.9.0</version>\n            </dependency>\n\n            <dependency>\n                <groupId>com.google.guava</groupId>\n                <artifactId>guava</artifactId>\n                <version>20.0</version>\n            </dependency>\n\n            <dependency>\n                <groupId>org.apache.commons</groupId>\n                <artifactId>commons-collections4</artifactId>\n                <version>4.1</version>\n            </dependency>\n\n            <dependency>\n                <groupId>commons-beanutils</groupId>\n                <artifactId>commons-beanutils</artifactId>\n                <version>1.9.3</version>\n            </dependency>\n\n            <dependency>\n                <groupId>org.apache.commons</groupId>\n                <artifactId>commons-lang3</artifactId>\n                <version>3.7</version>\n            </dependency>\n\n            <dependency>\n                <groupId>com.alibaba</groupId>\n                <artifactId>fastjson</artifactId>\n                <version>1.2.39</version>\n            </dependency>\n\n            <dependency>\n                <groupId>org.apache.zookeeper</groupId>\n                <artifactId>zookeeper</artifactId>\n                <version>3.4.9</version>\n                <exclusions>\n                    <exclusion>\n                        <groupId>org.slf4j</groupId>\n                        <artifactId>slf4j-log4j12</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>log4j</groupId>\n                        <artifactId>log4j</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.asynchttpclient</groupId>\n                <artifactId>async-http-client</artifactId>\n                <version>2.2.0</version>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-loader</artifactId>\n                <version>1.4.7.RELEASE</version>\n            </dependency>\n\n            <dependency>\n                <groupId>org.gitlab4j</groupId>\n                <artifactId>gitlab4j-api</artifactId>\n                <version>4.8.9</version>\n            </dependency>\n\n            <dependency>\n                <groupId>org.eclipse.jgit</groupId>\n                <artifactId>org.eclipse.jgit</artifactId>\n                <version>4.5.0.201609210915-r</version>\n            </dependency>\n\n            <dependency>\n                <groupId>commons-io</groupId>\n                <artifactId>commons-io</artifactId>\n                <version>2.6</version>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n\n    <build>\n        <pluginManagement>\n            <plugins>\n                <plugin>\n                    <groupId>org.springframework.boot</groupId>\n                    <artifactId>spring-boot-maven-plugin</artifactId>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <configuration>\n                        <source>${jdk.version}</source>\n                        <target>${jdk.version}</target>\n                        <encoding>UTF-8</encoding>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-resources-plugin</artifactId>\n                    <configuration>\n                        <encoding>UTF-8</encoding>\n                    </configuration>\n                </plugin>\n\n            </plugins>\n\n        </pluginManagement>\n    </build>\n\n    <distributionManagement>\n        <snapshotRepository>\n            <id>ossrh</id>\n            <url>https://oss.sonatype.org/content/repositories/snapshots</url>\n        </snapshotRepository>\n        <repository>\n            <id>ossrh</id>\n            <name>Maven Central Staging Repository</name>\n            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n        </repository>\n    </distributionManagement>\n\n\n    <profiles>\n        <profile>\n            <id>release</id>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.sonatype.plugins</groupId>\n                        <artifactId>nexus-staging-maven-plugin</artifactId>\n                        <version>1.6.7</version>\n                        <extensions>true</extensions>\n                        <configuration>\n                            <serverId>ossrh</serverId>\n                            <nexusUrl>https://oss.sonatype.org/</nexusUrl>\n                            <autoReleaseAfterClose>true</autoReleaseAfterClose>\n                        </configuration>\n                    </plugin>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-release-plugin</artifactId>\n                        <configuration>\n                            <autoVersionSubmodules>true</autoVersionSubmodules>\n                            <useReleaseProfile>false</useReleaseProfile>\n                            <releaseProfiles>release</releaseProfiles>\n                            <goals>deploy</goals>\n                        </configuration>\n                    </plugin>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-compiler-plugin</artifactId>\n                        <configuration>\n                            <source>${jdk.version}</source>\n                            <target>${jdk.version}</target>\n                            <encoding>UTF-8</encoding>\n                        </configuration>\n                    </plugin>\n                    <!--sign-->\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-gpg-plugin</artifactId>\n                        <version>1.5</version>\n                        <executions>\n                            <execution>\n                                <id>sign-artifacts</id>\n                                <phase>verify</phase>\n                                <goals>\n                                    <goal>sign</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n\n                    <!--code-->\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-source-plugin</artifactId>\n                        <version>3.0.1</version>\n                        <executions>\n                            <execution>\n                                <id>attach-sources</id>\n                                <goals>\n                                    <goal>jar-no-fork</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                    <!--javadoc-->\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-javadoc-plugin</artifactId>\n                        <version>3.0.0</version>\n                        <executions>\n                            <execution>\n                                <id>attach-javadocs</id>\n                                <goals>\n                                    <goal>jar</goal>\n                                </goals>\n                                <configuration>\n                                    <additionalOptions>\n                                        -Xdoclint:none\n                                    </additionalOptions>\n                                </configuration>\n                            </execution>\n                        </executions>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n    </profiles>\n</project>\n"
  },
  {
    "path": "tac-console/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>tac</artifactId>\n        <groupId>com.alibaba</groupId>\n        <version>0.0.4</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>tac-console</artifactId>\n    <packaging>jar</packaging>\n\n    <name>tac-console</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n\n    <dependencies>\n\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-web</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-actuator</artifactId>\n        </dependency>\n\n       <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-devtools</artifactId>\n            <scope>runtime</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.projectlombok</groupId>\n            <artifactId>lombok</artifactId>\n            <optional>true</optional>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-test</artifactId>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-thymeleaf</artifactId>\n\n        </dependency>\n\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-configuration-processor</artifactId>\n            <optional>true</optional>\n        </dependency>\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>tac-engine</artifactId>\n        </dependency>\n\n\n\n    </dependencies>\n\n    <build>\n\n        <plugins>\n            <plugin>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-maven-plugin</artifactId>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <source>${jdk.version}</source>\n                    <target>${jdk.version}</target>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-resources-plugin</artifactId>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n        </plugins>\n\n    </build>\n</project>\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/ConsoleApplication.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console;\n\nimport com.alibaba.tac.console.sdk.MenuOptionHandler;\nimport com.alibaba.tac.engine.bootlaucher.BootJarLaucherUtils;\nimport com.alibaba.tac.engine.code.CodeLoadService;\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.boot.*;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;\nimport org.springframework.boot.loader.jar.JarFile;\nimport org.springframework.context.ApplicationListener;\nimport org.springframework.context.annotation.*;\nimport org.springframework.web.servlet.config.annotation.CorsRegistry;\nimport org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurer;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\nimport javax.annotation.Resource;\n\n/**\n * @author jinshuan.li 07/02/2018 11:18\n */\n@SpringBootApplication(scanBasePackages = \"${tac.app.scan.packages}\")\n@PropertySources({@PropertySource(\"application.properties\"), @PropertySource(\"tac-console.properties\")})\n@EnableAspectJAutoProxy(proxyTargetClass = true)\n@Import(ConsoleBeanConfig.class)\n@Slf4j\npublic class ConsoleApplication implements CommandLineRunner {\n\n    @Resource\n    private ApplicationArguments applicationArguments;\n\n    @Resource\n    private MenuOptionHandler menuOptionHandler;\n\n    public static void main(String[] args)\n        throws Exception {\n\n        // parse the args\n        ApplicationArguments arguments = new DefaultApplicationArguments(args);\n        boolean help = arguments.containsOption(ConsoleConstants.MENU_HELP);\n        if (help) {\n            MenuOptionHandler.printUsage();\n            return;\n        }\n\n        // the code must execute before spring start\n        JarFile bootJarFile = BootJarLaucherUtils.getBootJarFile();\n        if (bootJarFile != null) {\n            BootJarLaucherUtils.unpackBootLibs(bootJarFile);\n            log.debug(\"the temp tac lib folder:{}\", BootJarLaucherUtils.getTempUnpackFolder());\n        }\n\n\n        // get command args and start spring boot\n        Boolean webEnv = false;\n        String additionProfile = ConsoleConstants.ADDDITION_PROFILE_SIMPLE;\n        if (arguments.containsOption(ConsoleConstants.OPTION_ADMIN)) {\n            webEnv = true;\n            additionProfile = ConsoleConstants.ADDDITION_PROFILE_ADMIN;\n        }\n\n        SpringApplication springApplication = new SpringApplication(ConsoleApplication.class);\n        springApplication.setWebEnvironment(webEnv);\n        springApplication.setBannerMode(Banner.Mode.OFF);\n\n        if (!webEnv) {\n            // command model\n            springApplication.setAdditionalProfiles(additionProfile);\n        } else {\n            // web model\n            springApplication.setAdditionalProfiles(additionProfile);\n        }\n\n        springApplication.addListeners(new ApplicationListener<ApplicationEnvironmentPreparedEvent>() {\n            @Override\n            public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {\n\n                CodeLoadService.changeClassLoader(event.getEnvironment());\n            }\n        });\n\n        springApplication.run(args);\n\n    }\n\n    @Bean\n    public WebMvcConfigurer webMvcConfigurer() {\n        return new WebMvcConfigurerAdapter() {\n            @Override\n            public void addCorsMappings(CorsRegistry registry) {\n                registry.addMapping(\"/api/**\").allowedMethods(\"GET\", \"POST\", \"PUT\", \"DELETE\");\n            }\n\n            @Override\n            public void addResourceHandlers(ResourceHandlerRegistry registry) {\n                super.addResourceHandlers(registry);\n                registry.addResourceHandler(\"/static/**\").addResourceLocations(\"classpath:/static/\");\n            }\n        };\n    }\n\n    @Bean\n    public ExitCodeGenerator exitCodeGenerator() {\n\n        return new ExitCodeGenerator() {\n            @Override\n            public int getExitCode() {\n                return 0;\n            }\n        };\n    }\n\n    @Override\n    public void run(String... args) throws Exception {\n\n        // handle the command\n        Boolean webEnv = false;\n        if (applicationArguments.containsOption(ConsoleConstants.OPTION_ADMIN)) {\n            webEnv = true;\n        }\n        if (!webEnv) {\n            menuOptionHandler.handleMenuOption();\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/ConsoleBeanConfig.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console;\n\nimport com.alibaba.tac.engine.service.EngineBeansConfig;\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;\nimport org.springframework.context.annotation.*;\n\n/**\n * @author jinshuan.li 01/03/2018 17:21\n *\n * this class is used to scan extend packages  you can set the scan.package.name value from properties\n */\n@Slf4j\n@ConditionalOnProperty(name = \"scan.package.name\")\n@Configuration\n@ComponentScan(basePackages = \"${scan.package.name}\")\n@Import(EngineBeansConfig.class)\npublic class ConsoleBeanConfig {\n\n\n}\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/ConsoleConstants.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console;\n\n/**\n * @author jinshuan.li 27/02/2018 21:00\n */\npublic class ConsoleConstants {\n\n    public static final String MENU_HELP = \"help\";\n\n    public static final String MENU_PACKAGE = \"package\";\n\n    public static final String MENU_PUBLISH = \"publish\";\n\n    public static final String OPTION_ADMIN = \"admin\";\n\n    public static final String ADDDITION_PROFILE_SIMPLE = \"simple\";\n\n    public static final String ADDDITION_PROFILE_ADMIN = \"admin\";\n\n    public static final String ADDDITION_PROFILE_CONSOLE = \"debug\";\n\n}\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/TacApplicationContext.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext;\n\n/**\n * @author jinshuan.li 06/03/2018 20:51\n */\n@Slf4j\n@Deprecated\npublic class TacApplicationContext extends AnnotationConfigEmbeddedWebApplicationContext {\n\n    public TacApplicationContext() throws Exception {\n\n        super();\n    }\n\n\n\n}\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/error/ConsoleError.java",
    "content": "\n/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console.error;\n\n/**\n * @author jinshuan.li 06/03/2018 12:19\n */\npublic enum ConsoleError implements IErrorCode {\n    /**\n     * system error\n     */\n    SYSTEM_ERROR(\"SYSTEM_ERROR\", \"system error\");\n\n    private ConsoleError(String code, String msg) {\n\n        this.code = code;\n        this.msg = msg;\n    }\n\n    private String code;\n\n    private String msg;\n\n    @Override\n    public String getCode() {\n        return code;\n    }\n\n    @Override\n    public String getMessage() {\n        return msg;\n    }\n}\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/error/IErrorCode.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console.error;\n\n/**\n * @author jinshuan.li 06/03/2018 12:18\n */\npublic interface IErrorCode {\n\n    String getCode();\n\n    String getMessage();\n}\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/sdk/MenuOptionHandler.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console.sdk;\n\nimport com.alibaba.tac.console.ConsoleConstants;\nimport com.alibaba.tac.engine.code.CodeCompileService;\nimport com.alibaba.tac.engine.code.TacFileService;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.collections4.CollectionUtils;\nimport org.springframework.boot.ApplicationArguments;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.PostConstruct;\nimport javax.annotation.Resource;\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.List;\n\n/**\n * @author jinshuan.li 27/02/2018 21:05\n */\n@Slf4j\n@Service\npublic class MenuOptionHandler {\n\n    @Resource\n    private ApplicationArguments arguments;\n\n    @Resource\n    private CodeCompileService codeCompileService;\n\n    @Resource\n    private TacFileService tacFileService;\n\n    @PostConstruct\n    public void init() {\n\n    }\n\n    /**\n     * handle the menu option\n     * <p>\n     * the is just a package command\n     *\n     * @throws IOException\n     */\n    public void handleMenuOption() throws IOException {\n\n        if (CollectionUtils.isEmpty(arguments.getOptionNames())) {\n            printUsage();\n            return;\n        }\n\n        if (arguments.containsOption(ConsoleConstants.MENU_PACKAGE)) {\n            System.out.println(\"handleo pacakge\");\n            handlePackage();\n        }\n\n        if (arguments.containsOption(ConsoleConstants.MENU_PUBLISH)) {\n\n            //handlePublish();\n        }\n    }\n\n    /**\n     * handle compile and package source\n     */\n    protected void handlePackage() {\n\n        String msCode = \"\";\n        List<String> msCodes = arguments.getOptionValues(\"msCode\");\n\n        List<String> srcDirs = arguments.getOptionValues(\"sourceDir\");\n\n        if (CollectionUtils.isEmpty(msCodes)) {\n            printUsage();\n            return;\n        }\n        msCode = msCodes.get(0);\n\n        String srcDir = \"\";\n        if (CollectionUtils.isEmpty(srcDirs)) {\n            String absolutePath = new File(\"\").getAbsolutePath();\n            srcDir = absolutePath;\n        } else {\n            srcDir = srcDirs.get(0);\n        }\n\n        try {\n\n            // compile\n\n            Boolean compile = codeCompileService.compile(msCode, srcDir);\n\n            // package\n            codeCompileService.getJarFile(msCode);\n\n            log.info(\"package success . file:{}\", tacFileService.getClassFileOutputPath(msCode) + \".zip\");\n\n        } catch (Exception e) {\n\n            log.error(e.getMessage(), e);\n        }\n\n    }\n\n    public static void printUsage() {\n\n        System.out.println(\"useage:\");\n        System.out.println(\"--package --msCode=${msCode} --sourceDir=${sourceDir}\");\n        // System.out.println(\"--publish --msCode=${msCode} --zipFile=${zipFile}\");\n    }\n\n}\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/web/HomeController.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console.web;\n\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\n\n/**\n * @author jinshuan.li 07/03/2018 17:18\n */\n@Controller\n@RequestMapping\npublic class HomeController {\n\n    @GetMapping(\"/\")\n    public String index() {\n\n        return \"index\";\n    }\n}\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/web/InstFileRO.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console.web;\n\nimport lombok.Data;\nimport org.springframework.web.multipart.MultipartFile;\n\nimport java.io.Serializable;\n\n/**\n * @author jinshuan.li 05/03/2018 20:16\n */\n@Data\npublic class InstFileRO implements Serializable{\n    private static final long serialVersionUID = -7650755238417075767L;\n\n\n    private String name;\n\n    private MultipartFile  file;\n\n    private Integer age;\n}\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/web/TacInstController.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console.web;\n\nimport com.alibaba.tac.console.error.ConsoleError;\nimport com.alibaba.tac.console.web.ro.InstTestRO;\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.service.IMsInstFileService;\nimport com.alibaba.tac.engine.inst.service.IMsInstService;\nimport com.alibaba.tac.engine.ms.domain.TacMsDO;\nimport com.alibaba.tac.engine.ms.service.IMsPublisher;\nimport com.alibaba.tac.engine.ms.service.IMsService;\nimport com.alibaba.tac.engine.service.TacPublishTestService;\nimport com.alibaba.tac.engine.code.TacFileService;\nimport com.alibaba.tac.sdk.common.TacResult;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang3.StringUtils;\nimport org.springframework.web.bind.annotation.*;\nimport org.springframework.web.multipart.MultipartFile;\n\nimport javax.annotation.Resource;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * @author jinshuan.li 05/03/2018 20:14\n */\n\n@Slf4j\n@RestController\n@RequestMapping(\"/api/inst\")\npublic class TacInstController {\n\n    @Resource\n    private IMsService msService;\n\n    @Resource\n    private IMsInstService msInstService;\n\n    @Resource\n    private IMsPublisher msPublisher;\n\n    @Resource\n    private TacPublishTestService tacPublishTestService;\n\n    @Resource(name = \"prePublishMsInstFileService\")\n    private IMsInstFileService prePublishMsInstFileService;\n\n    @PostMapping(value = \"/uploadFile\")\n    public TacResult<List<TacMsDO>> uploadFile(@RequestParam(\"file\") MultipartFile instFileRO,\n                                               @RequestParam(\"msCode\") String msCode) {\n\n        return TacResult.newResult(null);\n\n    }\n\n    @GetMapping(value = \"/info/{msCode}\")\n    public TacResult<TacInst> getMsInst(@PathVariable(\"msCode\") String msCode) {\n\n        try {\n            TacMsDO ms = msService.getMs(msCode);\n            if (ms == null) {\n                throw new IllegalArgumentException(\"the service is not exist\");\n            }\n\n            TacInst tacInst = this.getExistTacInst(ms, \"\");\n\n            return TacResult.newResult(tacInst);\n\n        } catch (Exception e) {\n            return TacResult.errorResult(ConsoleError.SYSTEM_ERROR.getCode(), e.getMessage());\n        }\n\n    }\n\n    @PostMapping(\"/create\")\n    public TacResult<TacMsDO> create(@RequestBody TacInst tacInst) {\n\n        String msCode = tacInst.getMsCode();\n        try {\n            if (StringUtils.isEmpty(msCode)) {\n                throw new IllegalArgumentException(\"invalid params\");\n            }\n            TacMsDO ms = msService.getMs(msCode);\n            if (ms == null) {\n                throw new IllegalStateException(\"the service with code \" + msCode + \" not exist\");\n            }\n\n            String name = tacInst.getName();\n            String gitBranch = tacInst.getGitBranch();\n\n            if (StringUtils.isEmpty(name) || StringUtils.isEmpty(gitBranch)) {\n                throw new IllegalArgumentException(\"invalid params\");\n            }\n            msInstService.createGitTacMsInst(msCode, name, gitBranch);\n\n            return TacResult.newResult(ms);\n        } catch (Exception e) {\n\n            return TacResult.errorResult(ConsoleError.SYSTEM_ERROR.getCode(), e.getMessage());\n        }\n\n    }\n\n    @PostMapping(\"/update\")\n    public TacResult<TacMsDO> update(@RequestBody TacInst tacInst) {\n\n        String msCode = tacInst.getMsCode();\n\n        long instId = tacInst.getId();\n\n        try {\n            if (StringUtils.isEmpty(msCode)) {\n                throw new IllegalArgumentException(\"invalid params\");\n            }\n            TacMsDO ms = msService.getMs(msCode);\n            if (ms == null) {\n                throw new IllegalStateException(\"the service with code \" + msCode + \" not exist\");\n            }\n\n            TacInst tacMsInst = msInstService.getTacMsInst(instId);\n\n            if (tacMsInst == null) {\n                throw new IllegalStateException(\"inst not exist\");\n            }\n\n            String name = tacInst.getName();\n            String gitBranch = tacInst.getGitBranch();\n\n            if (StringUtils.isEmpty(name) || StringUtils.isEmpty(gitBranch)) {\n                throw new IllegalArgumentException(\"invalid params\");\n            }\n\n            tacMsInst.setGitBranch(gitBranch);\n            tacMsInst.setName(name);\n\n            msInstService.updateTacMsInst(instId, tacMsInst);\n\n            return TacResult.newResult(ms);\n        } catch (Exception e) {\n\n            return TacResult.errorResult(ConsoleError.SYSTEM_ERROR.getCode(), e.getMessage());\n        }\n\n    }\n\n    @GetMapping(value = \"/list/{msCode}\")\n    public TacResult<List<TacInst>> getMsInstList(@PathVariable(\"msCode\") String msCode) {\n\n        try {\n            TacMsDO ms = msService.getMs(msCode);\n            if (ms == null) {\n                throw new IllegalArgumentException(\"the service is not exist\");\n            }\n\n            List<TacInst> msInsts = msInstService.getMsInsts(msCode);\n            Optional.ofNullable(msInsts).ifPresent(items -> {\n\n                items.stream().forEach(d -> {\n                    if (d.getStatus() == null) {\n                        d.setStatus(TacInst.STATUS_NEW);\n                    }\n                });\n            });\n            return TacResult.newResult(msInsts);\n\n        } catch (Exception e) {\n            return TacResult.errorResult(ConsoleError.SYSTEM_ERROR.getCode(), e.getMessage());\n        }\n\n    }\n\n    private TacInst getExistTacInst(TacMsDO ms, String jarVersion) {\n\n        String msCode = ms.getCode();\n\n        Long publishedInstId = ms.getPublishedInstId();\n        TacInst tacMsInst = null;\n        if (publishedInstId == null || publishedInstId.equals(0)) {\n            tacMsInst = msInstService.createTacMsInst(msCode, ms.getName(), jarVersion);\n            // update service data\n            ms.setPublishedInstId(tacMsInst.getId());\n\n            msService.updateMs(msCode, ms);\n\n            publishedInstId = ms.getPublishedInstId();\n        }\n        tacMsInst = msInstService.getTacMsInst(publishedInstId);\n\n        if (tacMsInst == null) {\n            throw new IllegalStateException(\"can't find the instance \" + publishedInstId);\n        }\n        return tacMsInst;\n    }\n\n    @PostMapping(value = \"/prePublish\")\n    public TacResult<TacInst> prePublish(@RequestParam(\"file\") MultipartFile instFileRO,\n                                         @RequestParam(\"msCode\") String msCode,\n                                         @RequestParam(value = \"instId\", required = false) Long instId) {\n\n        try {\n            byte[] bytes = instFileRO.getBytes();\n            String md5 = TacFileService.getMd5(bytes);\n\n            TacMsDO ms = msService.getMs(msCode);\n            if (ms == null) {\n                throw new IllegalArgumentException(\"the service is not exist\");\n            }\n\n            TacInst tacMsInst = this.getExistTacInst(ms, md5);\n\n            // prepublish\n            msPublisher.prePublish(tacMsInst, bytes);\n\n            return TacResult.newResult(msInstService.getTacMsInst(tacMsInst.getId()));\n\n        } catch (Exception e) {\n\n            return TacResult.errorResult(ConsoleError.SYSTEM_ERROR.getCode(), e.getMessage());\n        }\n\n    }\n\n    @PostMapping(value = \"/publish\")\n    public TacResult<TacInst> publish(@RequestParam(\"msCode\") String msCode,\n                                      @RequestParam(value = \"instId\") Long instId) {\n\n        try {\n\n            TacInst tacMsInst = msInstService.getTacMsInst(instId);\n            if (tacMsInst == null) {\n                throw new IllegalArgumentException(\"the instance is not exist \" + instId);\n            }\n\n            if (!StringUtils.equalsIgnoreCase(tacMsInst.getMsCode(), msCode)) {\n                throw new IllegalArgumentException(\"the msCode is not match\");\n            }\n\n            // 取预发布的数据\n            byte[] instanceFile = prePublishMsInstFileService.getInstanceFile(instId);\n            if (instanceFile == null) {\n                throw new IllegalStateException(\"can't find prePublish data\");\n            }\n            // 正式发布\n            msPublisher.publish(tacMsInst, instanceFile);\n\n        } catch (Exception e) {\n\n            return TacResult.errorResult(ConsoleError.SYSTEM_ERROR.getCode(), e.getMessage());\n        }\n        return TacResult.newResult(null);\n\n    }\n\n    @PostMapping(value = \"/preTest\")\n    public TacResult<Object> preTest(@RequestBody InstTestRO instTestRO) {\n\n        Long instId = instTestRO.getInstId();\n\n        Map<String, Object> params = instTestRO.getParams();\n\n        try {\n            TacResult<Object> result = tacPublishTestService.prePublishTest(instId, instTestRO.getMsCode(),\n                params);\n            TacResult<Object> response = new TacResult<>(result);\n            return response;\n\n        } catch (Exception e) {\n\n            log.info(\"preTest error.  {} {}\", instTestRO, e.getMessage(), e);\n\n            return TacResult.errorResult(ConsoleError.SYSTEM_ERROR.getCode(), e.getMessage());\n\n        }\n\n    }\n\n    @PostMapping(value = \"/onlineTest\")\n    public TacResult<?> onlineTest(@RequestBody InstTestRO instTestRO) {\n\n        Long instId = instTestRO.getInstId();\n\n        Map<String, Object> params = instTestRO.getParams();\n\n        try {\n            TacResult<?> result = tacPublishTestService.onlinePublishTest(instId, instTestRO.getMsCode(), params);\n            return result;\n\n        } catch (Exception e) {\n\n            log.info(\"preTest error.  {} {}\", instTestRO, e.getMessage(), e);\n\n            return TacResult.errorResult(ConsoleError.SYSTEM_ERROR.getCode(), e.getMessage());\n\n        }\n\n    }\n\n    @GetMapping(value = \"/gitPrePublish\")\n    public TacResult<TacInst> prePublish(@RequestParam(value = \"instId\") Long instId) {\n\n        try {\n\n            TacInst tacMsInst = msInstService.getTacMsInst(instId);\n\n            if (tacMsInst == null) {\n                throw new IllegalArgumentException(\"inst not exist\");\n            }\n\n            TacMsDO ms = msService.getMs(tacMsInst.getMsCode());\n\n            if (ms == null) {\n                throw new IllegalArgumentException(\"ms not eist\");\n            }\n\n            tacMsInst = msPublisher.gitPrePublish(ms, tacMsInst);\n\n            return TacResult.newResult(tacMsInst);\n\n        } catch (Exception e) {\n\n            return TacResult.errorResult(ConsoleError.SYSTEM_ERROR.getCode(), e.getMessage());\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/web/TacMsController.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console.web;\n\nimport com.alibaba.tac.console.error.ConsoleError;\nimport com.alibaba.tac.engine.ms.domain.TacMsDO;\nimport com.alibaba.tac.engine.ms.service.IMsService;\nimport com.alibaba.tac.sdk.common.TacResult;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.annotation.Resource;\nimport java.util.List;\n\n/**\n * @author jinshuan.li 05/03/2018 19:30\n */\n@RestController\n@RequestMapping(\"/api/ms\")\npublic class TacMsController {\n\n    @Resource\n    private IMsService msService;\n\n    @GetMapping(\"/list\")\n    public TacResult<List<TacMsDO>> list() {\n\n        List<TacMsDO> allMs = msService.getAllMs();\n        return TacResult.newResult(allMs);\n\n    }\n\n    @PostMapping(\"/create\")\n    public TacResult<TacMsDO> create(@RequestBody TacMsDO tacMsDO) {\n\n        try {\n            TacMsDO ms = msService.getMs(tacMsDO.getCode());\n            if (ms != null) {\n                throw new IllegalStateException(\"the service with code \" + tacMsDO.getCode() + \" already exist\");\n            }\n            ms = msService.createMs(tacMsDO);\n            return TacResult.newResult(ms);\n        } catch (Exception e) {\n\n            return TacResult.errorResult(ConsoleError.SYSTEM_ERROR.getCode(), e.getMessage());\n        }\n\n    }\n\n    @PostMapping(\"/update\")\n    public TacResult<TacMsDO> update(@RequestBody TacMsDO tacMsDO) {\n\n        try {\n            msService.checkMsDO(tacMsDO);\n\n            TacMsDO ms = msService.getMs(tacMsDO.getCode());\n\n            if (ms == null) {\n                throw new IllegalStateException(\"该服务不存在\");\n            }\n            ms.setName(tacMsDO.getName());\n            ms.setGitSupport(tacMsDO.getGitSupport());\n            ms.setGitRepo(tacMsDO.getGitRepo());\n            msService.updateMs(tacMsDO.getCode(), ms);\n\n            return TacResult.newResult(tacMsDO);\n\n        } catch (Exception e) {\n            return TacResult.errorResult(\"system\", e.getMessage());\n        }\n\n    }\n\n    @PostMapping(\"/offline\")\n    public TacResult<Boolean> offline(@RequestParam(\"msCode\") String msCode) {\n\n        throw new UnsupportedOperationException(\"不支持该功能\");\n\n    }\n}\n"
  },
  {
    "path": "tac-console/src/main/java/com/alibaba/tac/console/web/ro/InstTestRO.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.console.web.ro;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Map;\n\n/**\n * @author jinshuan.li 06/03/2018 14:21\n */\n\n@Data\npublic class InstTestRO implements Serializable {\n\n    private Long instId;\n\n    private String msCode;\n\n    private Map<String, Object> params;\n\n}\n"
  },
  {
    "path": "tac-console/src/main/resources/application-admin.properties",
    "content": "\n# the properites when run in admin model\n\n\nname.simple=tac-admin\n\n\n# the scan packages  , don't change it if necessary\ntac.app.scan.packages=com.alibaba.tac"
  },
  {
    "path": "tac-console/src/main/resources/application-simple.properties",
    "content": "\n\n# the properites when run in command model\n\nname.simple=tac-simple\n\n\n# the scan packages  , don't change it if necessary\ntac.app.scan.packages=com.alibaba.tac.console.sdk,com.alibaba.tac.engine.code,com.alibaba.tac.engine.compile"
  },
  {
    "path": "tac-console/src/main/resources/application.properties",
    "content": "\n\n# the port when use web model\nserver.port=7001\n\n\n# scan the extend package names\nscan.package.name=com.tmall.itemcenter\n\n# the location of extend jars\ntac.extend.lib=extendlibs\n\n\n# the default store , when use \"redis\" you should install and config redis server , use \"zookeeper\"  you should install and config zookeeper server\ntac.default.store=redis\n\n\n# the location of logback config file\nlogging.config=classpath:tac/default-logback-spring.xml\n\n\n\n# the http url prefix when you run the tac-container, the is used to online publish check;\ntac.container.web.api=http://localhost:8001/api/tac/execute\n\n\ntac.app.scan.packages=com.alibaba.tac"
  },
  {
    "path": "tac-console/src/main/resources/static/css/app.797406e2fb84b15ea0b383ad60572f28.css",
    "content": "#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50}h1[data-v-afa07f3c],h2[data-v-afa07f3c]{font-weight:400}ul[data-v-afa07f3c]{list-style-type:none;padding:0}li[data-v-afa07f3c]{display:inline-block;margin:0 10px}a[data-v-afa07f3c]{color:#42b983}.tacMs[data-v-7b1ca360]{text-align:left}.tacInst[data-v-3bfbdc0d]{text-align:left;padding:30px}.logResult[data-v-13be33e9]{background-color:#000;color:#ff0;padding:30px;max-height:600px;overflow:scroll}/*!\n * Bootstrap v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex=\"-1\"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:\"\\2014   \\A0\"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1,.col-auto{-webkit-box-flex:0}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-2,.col-3{-webkit-box-flex:0}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-4,.col-5{-webkit-box-flex:0}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-6,.col-7{-webkit-box-flex:0}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-8,.col-9{-webkit-box-flex:0}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-10,.col-11{-webkit-box-flex:0}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder,.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label:before,.was-validated .custom-file-input:valid~.custom-file-label:before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label:before,.was-validated .custom-file-input:invalid~.custom-file-label:before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{-ms-flex-align:center;-ms-flex-pack:center;justify-content:center}.form-inline .form-group,.form-inline label{display:-ms-flexbox;display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff}.btn-link,.btn-link:hover{background-color:transparent}.btn-link:hover{color:#0056b3}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline;border-color:transparent}.btn-link.focus,.btn-link:focus{box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{height:0;overflow:hidden;transition:height .35s ease}.collapsing,.dropdown,.dropup{position:relative}.dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";display:none}.dropleft .dropdown-toggle:before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group,.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label:before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label:before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label:before{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:\"\"}.custom-control-label:after{background-repeat:no-repeat;background-position:50%;background-size:50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\"1\"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);font-size:75%}.custom-select-lg,.custom-select-sm{padding-top:.375rem;padding-bottom:.375rem}.custom-select-lg{height:calc(2.875rem + 2px);font-size:125%}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(2.25rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-control:before{border-color:#80bdff}.custom-file-input:lang(en)~.custom-file-label:after{content:\"Browse\"}.custom-file-label{left:0;z-index:1;height:calc(2.25rem + 2px);background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc((2.25rem + 2px) - 1px * 2);content:\"Browse\";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\"\";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child),.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:\"/\"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:-ms-flexbox;display:flex}.progress-bar{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal,.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-25%)}.modal.show .modal-dialog{transform:translate(0)}.modal-dialog-centered{-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-content,.modal-dialog-centered{display:-ms-flexbox;display:flex}.modal-content{position:relative;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow:after,.bs-popover-auto[x-placement^=top] .arrow:before,.bs-popover-top .arrow:after,.bs-popover-top .arrow:before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow:before,.bs-popover-top .arrow:before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow:after,.bs-popover-top .arrow:after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow:after,.bs-popover-auto[x-placement^=right] .arrow:before,.bs-popover-right .arrow:after,.bs-popover-right .arrow:before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow:before,.bs-popover-right .arrow:before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow:after,.bs-popover-right .arrow:after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow:after,.bs-popover-auto[x-placement^=bottom] .arrow:before,.bs-popover-bottom .arrow:after,.bs-popover-bottom .arrow:before{border-width:0 .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow:before,.bs-popover-bottom .arrow:before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow:after,.bs-popover-bottom .arrow:after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow:after,.bs-popover-auto[x-placement^=left] .arrow:before,.bs-popover-left .arrow:after,.bs-popover-left .arrow:before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow:before,.bs-popover-left .arrow:before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow:after,.bs-popover-left .arrow:after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-ms-flex-align:center;align-items:center;width:100%;transition:transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateZ(0)}}.active.carousel-item-right,.carousel-item-next{transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat 50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\")}.carousel-control-next-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:hsla(0,0%,100%,.5)}.carousel-indicators li:before{top:-10px}.carousel-indicators li:after,.carousel-indicators li:before{position:absolute;left:0;display:inline-block;width:100%;height:10px;content:\"\"}.carousel-indicators li:after{bottom:-10px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.857143%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#6c757d!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:\" (\" attr(title) \")\"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.input-group>.input-group-append:last-child>.b-dropdown:not(:last-child):not(.dropdown-toggle)>.btn,.input-group>.input-group-append:not(:last-child)>.b-dropdown>.btn,.input-group>.input-group-prepend>.b-dropdown>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.b-dropdown>.btn,.input-group>.input-group-prepend:first-child>.b-dropdown:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.b-dropdown>.btn{border-top-left-radius:0;border-bottom-left-radius:0}input.form-control[type=color],input.form-control[type=range]{height:2.25rem}input.form-control.form-control-sm[type=color],input.form-control.form-control-sm[type=range]{height:1.9375rem}input.form-control.form-control-lg[type=color],input.form-control.form-control-lg[type=range]{height:3rem}input.form-control[type=color]{padding:.25rem}input.form-control.form-control-sm[type=color]{padding:.125rem}table.b-table.b-table-fixed{table-layout:fixed}table.b-table[aria-busy=false]{opacity:1}table.b-table[aria-busy=true]{opacity:.6}table.b-table>tfoot>tr>th,table.b-table>thead>tr>th{position:relative}table.b-table>tfoot>tr>th.sorting,table.b-table>thead>tr>th.sorting{padding-right:1.5em;cursor:pointer}table.b-table>tfoot>tr>th.sorting:after,table.b-table>tfoot>tr>th.sorting:before,table.b-table>thead>tr>th.sorting:after,table.b-table>thead>tr>th.sorting:before{position:absolute;bottom:0;display:block;opacity:.4;padding-bottom:inherit;font-size:inherit;line-height:180%}table.b-table>tfoot>tr>th.sorting:before,table.b-table>thead>tr>th.sorting:before{right:.75em;content:\"\\2191\"}table.b-table>tfoot>tr>th.sorting:after,table.b-table>thead>tr>th.sorting:after{right:.25em;content:\"\\2193\"}table.b-table>tfoot>tr>th.sorting_asc:after,table.b-table>tfoot>tr>th.sorting_desc:before,table.b-table>thead>tr>th.sorting_asc:after,table.b-table>thead>tr>th.sorting_desc:before{opacity:1}table.b-table.b-table-stacked{width:100%}table.b-table.b-table-stacked,table.b-table.b-table-stacked>caption,table.b-table.b-table-stacked>tbody,table.b-table.b-table-stacked>tbody>tr,table.b-table.b-table-stacked>tbody>tr>td,table.b-table.b-table-stacked>tbody>tr>th{display:block}table.b-table.b-table-stacked>tbody>tr.b-table-bottom-row,table.b-table.b-table-stacked>tbody>tr.b-table-top-row,table.b-table.b-table-stacked>tfoot,table.b-table.b-table-stacked>thead{display:none}table.b-table.b-table-stacked>tbody>tr>:first-child{border-top-width:.4rem}table.b-table.b-table-stacked>tbody>tr>[data-label]{display:grid;grid-template-columns:40% auto;grid-gap:.25rem 1rem}table.b-table.b-table-stacked>tbody>tr>[data-label]:before{content:attr(data-label);display:inline;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal}@media (max-width:575.99px){table.b-table.b-table-stacked-sm{width:100%}table.b-table.b-table-stacked-sm,table.b-table.b-table-stacked-sm>caption,table.b-table.b-table-stacked-sm>tbody,table.b-table.b-table-stacked-sm>tbody>tr,table.b-table.b-table-stacked-sm>tbody>tr>td,table.b-table.b-table-stacked-sm>tbody>tr>th{display:block}table.b-table.b-table-stacked-sm>tbody>tr.b-table-bottom-row,table.b-table.b-table-stacked-sm>tbody>tr.b-table-top-row,table.b-table.b-table-stacked-sm>tfoot,table.b-table.b-table-stacked-sm>thead{display:none}table.b-table.b-table-stacked-sm>tbody>tr>:first-child{border-top-width:.4rem}table.b-table.b-table-stacked-sm>tbody>tr>[data-label]{display:grid;grid-template-columns:40% auto;grid-gap:.25rem 1rem}table.b-table.b-table-stacked-sm>tbody>tr>[data-label]:before{content:attr(data-label);display:inline;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal}}@media (max-width:767.99px){table.b-table.b-table-stacked-md{width:100%}table.b-table.b-table-stacked-md,table.b-table.b-table-stacked-md>caption,table.b-table.b-table-stacked-md>tbody,table.b-table.b-table-stacked-md>tbody>tr,table.b-table.b-table-stacked-md>tbody>tr>td,table.b-table.b-table-stacked-md>tbody>tr>th{display:block}table.b-table.b-table-stacked-md>tbody>tr.b-table-bottom-row,table.b-table.b-table-stacked-md>tbody>tr.b-table-top-row,table.b-table.b-table-stacked-md>tfoot,table.b-table.b-table-stacked-md>thead{display:none}table.b-table.b-table-stacked-md>tbody>tr>:first-child{border-top-width:.4rem}table.b-table.b-table-stacked-md>tbody>tr>[data-label]{display:grid;grid-template-columns:40% auto;grid-gap:.25rem 1rem}table.b-table.b-table-stacked-md>tbody>tr>[data-label]:before{content:attr(data-label);display:inline;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal}}@media (max-width:991.99px){table.b-table.b-table-stacked-lg{width:100%}table.b-table.b-table-stacked-lg,table.b-table.b-table-stacked-lg>caption,table.b-table.b-table-stacked-lg>tbody,table.b-table.b-table-stacked-lg>tbody>tr,table.b-table.b-table-stacked-lg>tbody>tr>td,table.b-table.b-table-stacked-lg>tbody>tr>th{display:block}table.b-table.b-table-stacked-lg>tbody>tr.b-table-bottom-row,table.b-table.b-table-stacked-lg>tbody>tr.b-table-top-row,table.b-table.b-table-stacked-lg>tfoot,table.b-table.b-table-stacked-lg>thead{display:none}table.b-table.b-table-stacked-lg>tbody>tr>:first-child{border-top-width:.4rem}table.b-table.b-table-stacked-lg>tbody>tr>[data-label]{display:grid;grid-template-columns:40% auto;grid-gap:.25rem 1rem}table.b-table.b-table-stacked-lg>tbody>tr>[data-label]:before{content:attr(data-label);display:inline;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal}}@media (max-width:1199.99px){table.b-table.b-table-stacked-xl{width:100%}table.b-table.b-table-stacked-xl,table.b-table.b-table-stacked-xl>caption,table.b-table.b-table-stacked-xl>tbody,table.b-table.b-table-stacked-xl>tbody>tr,table.b-table.b-table-stacked-xl>tbody>tr>td,table.b-table.b-table-stacked-xl>tbody>tr>th{display:block}table.b-table.b-table-stacked-xl>tbody>tr.b-table-bottom-row,table.b-table.b-table-stacked-xl>tbody>tr.b-table-top-row,table.b-table.b-table-stacked-xl>tfoot,table.b-table.b-table-stacked-xl>thead{display:none}table.b-table.b-table-stacked-xl>tbody>tr>:first-child{border-top-width:.4rem}table.b-table.b-table-stacked-xl>tbody>tr>[data-label]{display:grid;grid-template-columns:40% auto;grid-gap:.25rem 1rem}table.b-table.b-table-stacked-xl>tbody>tr>[data-label]:before{content:attr(data-label);display:inline;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal}}table.b-table>tbody>tr.b-table-details>td{border-top:none}div.jsoneditor .jsoneditor-search input{height:auto;border:inherit}div.jsoneditor .jsoneditor-search input:focus{border:none!important;box-shadow:none!important}div.jsoneditor table{border-collapse:collapse;width:auto}div.jsoneditor td,div.jsoneditor th{padding:0;display:table-cell;text-align:left;vertical-align:inherit;border-radius:inherit}div.jsoneditor-field,div.jsoneditor-readonly,div.jsoneditor-value{border:1px solid transparent;min-height:16px;min-width:32px;padding:2px;margin:1px;word-wrap:break-word;float:left}div.jsoneditor-field p,div.jsoneditor-value p{margin:0}div.jsoneditor-value{word-break:break-word}div.jsoneditor-readonly{min-width:16px;color:gray}div.jsoneditor-empty{border-color:#d3d3d3;border-style:dashed;border-radius:2px}div.jsoneditor-field.jsoneditor-empty:after,div.jsoneditor-value.jsoneditor-empty:after{pointer-events:none;color:#d3d3d3;font-size:8pt}div.jsoneditor-field.jsoneditor-empty:after{content:\"field\"}div.jsoneditor-value.jsoneditor-empty:after{content:\"value\"}a.jsoneditor-value.jsoneditor-url,div.jsoneditor-value.jsoneditor-url{color:green;text-decoration:underline}a.jsoneditor-value.jsoneditor-url{display:inline-block;padding:2px;margin:2px}a.jsoneditor-value.jsoneditor-url:focus,a.jsoneditor-value.jsoneditor-url:hover{color:#ee422e}div.jsoneditor td.jsoneditor-separator{padding:3px 0;vertical-align:top;color:gray}div.jsoneditor-field.jsoneditor-highlight,div.jsoneditor-field[contenteditable=true]:focus,div.jsoneditor-field[contenteditable=true]:hover,div.jsoneditor-value.jsoneditor-highlight,div.jsoneditor-value[contenteditable=true]:focus,div.jsoneditor-value[contenteditable=true]:hover{background-color:#ffffab;border:1px solid #ff0;border-radius:2px}div.jsoneditor-field.jsoneditor-highlight-active,div.jsoneditor-field.jsoneditor-highlight-active:focus,div.jsoneditor-field.jsoneditor-highlight-active:hover,div.jsoneditor-value.jsoneditor-highlight-active,div.jsoneditor-value.jsoneditor-highlight-active:focus,div.jsoneditor-value.jsoneditor-highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}div.jsoneditor-value.jsoneditor-string{color:green}div.jsoneditor-value.jsoneditor-array,div.jsoneditor-value.jsoneditor-object{min-width:16px;color:gray}div.jsoneditor-value.jsoneditor-number{color:#ee422e}div.jsoneditor-value.jsoneditor-boolean{color:#ff8c00}div.jsoneditor-value.jsoneditor-null{color:#004ed0}div.jsoneditor-value.jsoneditor-invalid{color:#000}div.jsoneditor-tree button{width:24px;height:24px;padding:0;margin:0;border:none;cursor:pointer;background:transparent url(/static/img/jsoneditor-icons.bfab7b1.svg)}div.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree,div.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree{cursor:pointer}div.jsoneditor-tree button.jsoneditor-collapsed{background-position:0 -48px}div.jsoneditor-tree button.jsoneditor-expanded{background-position:0 -72px}div.jsoneditor-tree button.jsoneditor-contextmenu{background-position:-48px -72px}div.jsoneditor-tree button.jsoneditor-contextmenu.jsoneditor-selected,div.jsoneditor-tree button.jsoneditor-contextmenu:focus,div.jsoneditor-tree button.jsoneditor-contextmenu:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu{background-position:-48px -48px}div.jsoneditor-tree :focus{outline:none}div.jsoneditor-tree button:focus{background-color:#f5f5f5;outline:1px solid #e5e5e5}div.jsoneditor-tree button.jsoneditor-invisible{visibility:hidden;background:none}div.jsoneditor{color:#1a1a1a;border:1px solid #3883fa;box-sizing:border-box;width:100%;height:100%;position:relative;padding:0;line-height:100%}div.jsoneditor-tree table.jsoneditor-tree{border-collapse:collapse;border-spacing:0;width:100%;margin:0}div.jsoneditor-outer{position:static;width:100%;height:100%;margin:-35px 0 0;padding:35px 0 0;box-sizing:border-box}div.jsoneditor-outer.has-nav-bar{margin:-61px 0 0;padding:61px 0 0}div.jsoneditor-outer.has-status-bar{margin:-35px 0 -26px;padding:35px 0 26px}.ace-jsoneditor,textarea.jsoneditor-text{min-height:150px}div.jsoneditor-tree{width:100%;height:100%;position:relative;overflow:auto}textarea.jsoneditor-text{width:100%;height:100%;margin:0;box-sizing:border-box;outline-width:0;border:none;background-color:#fff;resize:none}tr.jsoneditor-highlight,tr.jsoneditor-selected{background-color:#d3d3d3}tr.jsoneditor-selected button.jsoneditor-contextmenu,tr.jsoneditor-selected button.jsoneditor-dragarea{visibility:hidden}tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{visibility:visible}div.jsoneditor-tree button.jsoneditor-dragarea{background:url(/static/img/jsoneditor-icons.bfab7b1.svg) -72px -72px;cursor:move}div.jsoneditor-tree button.jsoneditor-dragarea:focus,div.jsoneditor-tree button.jsoneditor-dragarea:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{background-position:-72px -48px}div.jsoneditor td,div.jsoneditor th,div.jsoneditor tr{padding:0;margin:0}div.jsoneditor td,div.jsoneditor td.jsoneditor-tree{vertical-align:top}.jsoneditor-schema-error,div.jsoneditor-field,div.jsoneditor-value,div.jsoneditor td,div.jsoneditor textarea,div.jsoneditor th{font-family:dejavu sans mono,droid sans mono,consolas,monaco,lucida console,courier new,courier,monospace,sans-serif;font-size:10pt;color:#1a1a1a}.jsoneditor-schema-error{cursor:default;display:inline-block;height:24px;line-height:24px;position:relative;text-align:center;width:24px}div.jsoneditor-tree .jsoneditor-schema-error{width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(/static/img/jsoneditor-icons.bfab7b1.svg) -168px -48px}.jsoneditor-schema-error .jsoneditor-popover{background-color:#4c4c4c;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.4);color:#fff;display:none;padding:7px 10px;position:absolute;width:200px;z-index:4}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above{bottom:32px;left:-98px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below{top:32px;left:-98px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left{top:-7px;right:32px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right{top:-7px;left:32px}.jsoneditor-schema-error .jsoneditor-popover:before{border-right:7px solid transparent;border-left:7px solid transparent;content:\"\";display:block;left:50%;margin-left:-7px;position:absolute}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before{border-top:7px solid #4c4c4c;bottom:-7px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before{border-bottom:7px solid #4c4c4c;top:-7px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before{border-left:7px solid #4c4c4c;right:-14px;left:inherit}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before,.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before{border-top:7px solid transparent;border-bottom:7px solid transparent;content:\"\";top:19px;margin-left:inherit;margin-top:-7px;position:absolute}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before{border-right:7px solid #4c4c4c;left:-14px}.jsoneditor-schema-error:focus .jsoneditor-popover,.jsoneditor-schema-error:hover .jsoneditor-popover{display:block;-webkit-animation:fade-in .3s linear 1,move-up .3s linear 1;-moz-animation:fade-in .3s linear 1,move-up .3s linear 1;-ms-animation:fade-in .3s linear 1,move-up .3s linear 1}.jsoneditor .jsoneditor-text-errors{width:100%;border-collapse:collapse;background-color:#ffef8b;border-top:1px solid gold}.jsoneditor .jsoneditor-text-errors td{padding:3px 6px;vertical-align:middle}.jsoneditor-text-errors .jsoneditor-schema-error{border:none;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(/static/img/jsoneditor-icons.bfab7b1.svg) -168px -48px}div.jsoneditor-contextmenu-root{position:relative;width:0;height:0}div.jsoneditor-contextmenu{position:absolute;box-sizing:content-box;z-index:99999}div.jsoneditor-contextmenu li,div.jsoneditor-contextmenu ul{box-sizing:content-box;position:relative}div.jsoneditor-contextmenu ul{position:relative;left:0;top:0;width:128px;background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px hsla(0,0%,50%,.3);list-style:none;margin:0;padding:0}div.jsoneditor-contextmenu ul li button{position:relative;padding:0 4px 0 0;margin:0;width:128px;height:auto;border:none;cursor:pointer;color:#4d4d4d;background:transparent;font-size:10pt;font-family:arial,sans-serif;box-sizing:border-box;text-align:left}div.jsoneditor-contextmenu ul li button::-moz-focus-inner{padding:0;border:0}div.jsoneditor-contextmenu ul li button:focus,div.jsoneditor-contextmenu ul li button:hover{color:#1a1a1a;background-color:#f5f5f5;outline:none}div.jsoneditor-contextmenu ul li button.jsoneditor-default{width:96px}div.jsoneditor-contextmenu ul li button.jsoneditor-expand{float:right;width:32px;height:24px;border-left:1px solid #e5e5e5}div.jsoneditor-contextmenu div.jsoneditor-icon{position:absolute;top:0;left:0;width:24px;height:24px;border:none;padding:0;margin:0;background-image:url(/static/img/jsoneditor-icons.bfab7b1.svg)}div.jsoneditor-contextmenu ul li ul div.jsoneditor-icon{margin-left:24px}div.jsoneditor-contextmenu div.jsoneditor-text{padding:4px 0 4px 24px;word-wrap:break-word}div.jsoneditor-contextmenu div.jsoneditor-text.jsoneditor-right-margin{padding-right:24px}div.jsoneditor-contextmenu ul li button div.jsoneditor-expand{position:absolute;top:0;right:0;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(/static/img/jsoneditor-icons.bfab7b1.svg) 0 -72px;opacity:.4}div.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand{opacity:1}div.jsoneditor-contextmenu div.jsoneditor-separator{height:0;border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}div.jsoneditor-contextmenu button.jsoneditor-remove>div.jsoneditor-icon{background-position:-24px -24px}div.jsoneditor-contextmenu button.jsoneditor-remove:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-remove:hover>div.jsoneditor-icon{background-position:-24px 0}div.jsoneditor-contextmenu button.jsoneditor-append>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-append:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-append:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-insert>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-insert:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-insert:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-duplicate>div.jsoneditor-icon{background-position:-48px -24px}div.jsoneditor-contextmenu button.jsoneditor-duplicate:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-duplicate:hover>div.jsoneditor-icon{background-position:-48px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-asc>div.jsoneditor-icon{background-position:-168px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover>div.jsoneditor-icon{background-position:-168px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-desc>div.jsoneditor-icon{background-position:-192px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover>div.jsoneditor-icon{background-position:-192px 0}div.jsoneditor-contextmenu ul li button.jsoneditor-selected,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover{color:#fff;background-color:#ee422e}div.jsoneditor-contextmenu ul li{overflow:hidden}div.jsoneditor-contextmenu ul li ul{display:none;position:relative;left:-10px;top:0;border:none;box-shadow:inset 0 0 10px hsla(0,0%,50%,.5);padding:0 10px;transition:all .3s ease-out}div.jsoneditor-contextmenu ul li ul li button{padding-left:24px;animation:all ease-in-out 1s}div.jsoneditor-contextmenu ul li ul li button:focus,div.jsoneditor-contextmenu ul li ul li button:hover{background-color:#f5f5f5}div.jsoneditor-contextmenu button.jsoneditor-type-string>div.jsoneditor-icon{background-position:-144px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:hover>div.jsoneditor-icon{background-position:-144px 0}div.jsoneditor-contextmenu button.jsoneditor-type-auto>div.jsoneditor-icon{background-position:-120px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:hover>div.jsoneditor-icon{background-position:-120px 0}div.jsoneditor-contextmenu button.jsoneditor-type-object>div.jsoneditor-icon{background-position:-72px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:hover>div.jsoneditor-icon{background-position:-72px 0}div.jsoneditor-contextmenu button.jsoneditor-type-array>div.jsoneditor-icon{background-position:-96px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:hover>div.jsoneditor-icon{background-position:-96px 0}div.jsoneditor-contextmenu button.jsoneditor-type-modes>div.jsoneditor-icon{background-image:none;width:6px}div.jsoneditor-menu{width:100%;height:35px;padding:2px;margin:0;box-sizing:border-box;color:#fff;background-color:#3883fa;border-bottom:1px solid #3883fa}div.jsoneditor-menu>button,div.jsoneditor-menu>div.jsoneditor-modes>button{width:26px;height:26px;margin:2px;padding:0;border-radius:2px;border:1px solid transparent;background:transparent url(/static/img/jsoneditor-icons.bfab7b1.svg);color:#fff;opacity:.8;font-family:arial,sans-serif;font-size:10pt;float:left}div.jsoneditor-menu>button:hover,div.jsoneditor-menu>div.jsoneditor-modes>button:hover{background-color:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.4)}div.jsoneditor-menu>button:active,div.jsoneditor-menu>button:focus,div.jsoneditor-menu>div.jsoneditor-modes>button:active,div.jsoneditor-menu>div.jsoneditor-modes>button:focus{background-color:hsla(0,0%,100%,.3)}div.jsoneditor-menu>button:disabled,div.jsoneditor-menu>div.jsoneditor-modes>button:disabled{opacity:.5}div.jsoneditor-menu>button.jsoneditor-collapse-all{background-position:0 -96px}div.jsoneditor-menu>button.jsoneditor-expand-all{background-position:0 -120px}div.jsoneditor-menu>button.jsoneditor-undo{background-position:-24px -96px}div.jsoneditor-menu>button.jsoneditor-undo:disabled{background-position:-24px -120px}div.jsoneditor-menu>button.jsoneditor-redo{background-position:-48px -96px}div.jsoneditor-menu>button.jsoneditor-redo:disabled{background-position:-48px -120px}div.jsoneditor-menu>button.jsoneditor-compact{background-position:-72px -96px}div.jsoneditor-menu>button.jsoneditor-format{background-position:-72px -120px}div.jsoneditor-menu>button.jsoneditor-repair{background-position:-96px -96px}div.jsoneditor-menu>div.jsoneditor-modes{display:inline-block;float:left}div.jsoneditor-menu>div.jsoneditor-modes>button{background-image:none;width:auto;padding-left:6px;padding-right:6px}div.jsoneditor-menu>button.jsoneditor-separator,div.jsoneditor-menu>div.jsoneditor-modes>button.jsoneditor-separator{margin-left:10px}div.jsoneditor-menu a{font-family:arial,sans-serif;font-size:10pt;color:#fff;opacity:.8;vertical-align:middle}div.jsoneditor-menu a:hover{opacity:1}div.jsoneditor-menu a.jsoneditor-poweredBy{font-size:8pt;position:absolute;right:0;top:0;padding:10px}table.jsoneditor-search div.jsoneditor-results,table.jsoneditor-search input{font-family:arial,sans-serif;font-size:10pt;color:#1a1a1a;background:transparent}table.jsoneditor-search div.jsoneditor-results{color:#fff;padding-right:5px;line-height:24px}table.jsoneditor-search{position:absolute;right:4px;top:4px;border-collapse:collapse;border-spacing:0}table.jsoneditor-search div.jsoneditor-frame{border:1px solid transparent;background-color:#fff;padding:0 2px;margin:0}table.jsoneditor-search div.jsoneditor-frame table{border-collapse:collapse}table.jsoneditor-search input{width:120px;border:none;outline:none;margin:1px;line-height:20px}table.jsoneditor-search button{width:16px;height:24px;padding:0;margin:0;border:none;background:url(/static/img/jsoneditor-icons.bfab7b1.svg);vertical-align:top}table.jsoneditor-search button:hover{background-color:transparent}table.jsoneditor-search button.jsoneditor-refresh{width:18px;background-position:-99px -73px}table.jsoneditor-search button.jsoneditor-next{cursor:pointer;background-position:-124px -73px}table.jsoneditor-search button.jsoneditor-next:hover{background-position:-124px -49px}table.jsoneditor-search button.jsoneditor-previous{cursor:pointer;background-position:-148px -73px;margin-right:2px}table.jsoneditor-search button.jsoneditor-previous:hover{background-position:-148px -49px}div.jsoneditor div.autocomplete.dropdown{position:absolute;background:#fff;box-shadow:2px 2px 12px hsla(0,0%,50%,.3);border:1px solid #d3d3d3;z-index:100;overflow-x:hidden;overflow-y:auto;cursor:default;margin:0;padding-left:2pt;padding-right:5pt;text-align:left;outline:0;font-family:dejavu sans mono,droid sans mono,consolas,monaco,lucida console,courier new,courier,monospace,sans-serif;font-size:10pt}div.jsoneditor div.autocomplete.dropdown .item{color:#333}div.jsoneditor div.autocomplete.dropdown .item.hover{background-color:#ddd}div.jsoneditor div.autocomplete.hint{color:#aaa;top:4px;left:4px}div.jsoneditor-treepath{padding:0 5px;overflow:hidden}div.jsoneditor-treepath div.jsoneditor-contextmenu-root{position:absolute;left:0}div.jsoneditor-treepath span.jsoneditor-treepath-element{margin:1px;font-family:arial,sans-serif;font-size:10pt}div.jsoneditor-treepath span.jsoneditor-treepath-seperator{margin:2px;font-size:9pt;font-family:arial,sans-serif}div.jsoneditor-treepath span.jsoneditor-treepath-element:hover,div.jsoneditor-treepath span.jsoneditor-treepath-seperator:hover{cursor:pointer;text-decoration:underline}div.jsoneditor-statusbar{line-height:26px;height:26px;margin-top:-1px;color:gray;background-color:#ebebeb;border-top:1px solid #d3d3d3;box-sizing:border-box;font-size:10pt}div.jsoneditor-statusbar>.jsoneditor-curserinfo-label{margin:0 2px 0 4px}div.jsoneditor-statusbar>.jsoneditor-curserinfo-val{margin-right:12px}div.jsoneditor-statusbar>.jsoneditor-curserinfo-count{margin-left:4px}div.jsoneditor-navigation-bar{width:100%;height:26px;line-height:26px;padding:0;margin:0;border-bottom:1px solid #d3d3d3;box-sizing:border-box;color:gray;background-color:#ebebeb;font-size:10pt}div.jsoneditor-navigation-bar.nav-bar-empty:after{content:\"Select a node ...\";color:hsla(60,7%,38%,.56);position:absolute;margin-left:5px}.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}.toast-container{position:fixed;z-index:999999;pointer-events:none}.toast-container *{box-sizing:border-box}.toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px 3px 3px 3px;background-position:15px;background-repeat:no-repeat;box-shadow:0 0 12px #999;color:#fff;opacity:.8}.toast-container>:hover{box-shadow:0 0 12px #000;opacity:1;cursor:pointer}.toast-container>.toast-info{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=\")!important}.toast-container>.toast-error{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=\")!important}.toast-container>.toast-success{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==\")!important}.toast-container>.toast-warning{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=\")!important}.toast-container.toast-bottom-center>div,.toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}.toast-container.toast-bottom-full-width>div,.toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4}@media (max-width:240px){.toast-container>div{padding:8px 8px 8px 50px;width:11em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media (min-width:241px) and (max-width:480px){.toast-container>div{padding:8px 8px 8px 50px;width:18em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media (min-width:481px) and (max-width:768px){.toast-container>div{padding:15px 15px 15px 50px;width:25em}}.spanButton{margin-left:10px}"
  },
  {
    "path": "tac-console/src/main/resources/static/js/app.606b53e74ca0c7067159.js",
    "content": "webpackJsonp([1],{\"/lMo\":function(t,e,n){\"use strict\";e.a={name:\"TacMs\",data:function(){return{}}}},0:function(t,e){},\"1/oy\":function(t,e){},\"2Y9o\":function(t,e){},\"5njQ\":function(t,e,n){\"use strict\";e.a={name:\"TacInst\"}},\"68Sp\":function(t,e){t.exports={$schema:\"http://json-schema.org/draft-06/schema#\",$id:\"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#\",description:\"Meta-schema for $data reference (JSON-schema extension proposal)\",type:\"object\",required:[\"$data\"],properties:{$data:{type:\"string\",anyOf:[{format:\"relative-json-pointer\"},{format:\"json-pointer\"}]}},additionalProperties:!1}},\"9M+g\":function(t,e){},Fs8J:function(t,e,n){\"use strict\";e.a={name:\"Home\",data:function(){return{msg:\"Welcome to Tac App\"}}}},GWm9:function(t,e,n){\"use strict\";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{},[n(\"b-navbar\",{attrs:{toggleable:\"md\",type:\"dark\",variant:\"info\"}},[n(\"b-navbar-toggle\",{attrs:{target:\"nav_collapse\"}}),t._v(\" \"),n(\"b-navbar-brand\",{attrs:{href:\"#\"}},[t._v(\"TacAdmin\")]),t._v(\" \"),n(\"b-collapse\",{attrs:{\"is-nav\":\"\",id:\"nav_collapse\"}},[n(\"b-navbar-nav\",[n(\"b-nav-item\",[n(\"router-link\",{attrs:{to:\"/\"}},[t._v(\"Home\")])],1),t._v(\" \"),n(\"b-nav-item\",[n(\"router-link\",{attrs:{to:\"/tacMs\"}},[t._v(\"TacMicroService\")])],1),t._v(\" \"),n(\"b-nav-item\",{attrs:{href:\"#\"}},[t._v(\"Github\")])],1)],1)],1),t._v(\" \"),n(\"div\",{staticClass:\"app-container\"},[n(\"router-view\")],1)],1)},i=[],a={render:s,staticRenderFns:i};e.a=a},Id91:function(t,e){},\"JK/Y\":function(t,e,n){\"use strict\";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{attrs:{id:\"app\"}},[n(\"TacConsole\")],1)},i=[],a={render:s,staticRenderFns:i};e.a=a},JhBm:function(t,e){},KJjl:function(t,e){},LJGJ:function(t,e){},M93x:function(t,e,n){\"use strict\";function s(t){n(\"kllW\")}var i=n(\"xJD8\"),a=n(\"JK/Y\"),r=n(\"VU/8\"),o=s,c=r(i.a,a.a,!1,o,null,null);e.a=c.exports},MyJP:function(t,e){},NHnr:function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var s=n(\"7+uW\"),i=n(\"e6fC\"),a=n(\"8+8L\"),r=n(\"fGLG\"),o=n.n(r),c=n(\"M93x\"),u=n(\"YaEn\"),l=n(\"qb6w\"),d=(n.n(l),n(\"9M+g\")),m=(n.n(d),n(\"mERs\")),f=(n.n(m),n(\"gkSs\")),p=(n.n(f),n(\"i+dh\")),h=n(\"nyIL\"),v=n(\"MyJP\");n.n(v);s.a.use(o.a),s.a.use(i.a),s.a.use(a.a),s.a.component(\"TacConsole\",p.a),s.a.component(\"TacJSONEditor\",h.a),s.a.config.productionTip=!1,new s.a({el:\"#app\",router:u.a,template:\"<App/>\",components:{App:c.a}})},Pibc:function(t,e,n){\"use strict\";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"tacInst\"},[n(\"h1\",[t._v(\"发布流程\")]),t._v(\" \"),n(\"div\",[n(\"b-alert\",{attrs:{show:\"\",variant:\"primary\"}},[n(\"b-badge\",{attrs:{variant:\"danger\"}},[t._v(\"1\")]),t._v(\"\\n            上传编译好的zip文件\\n            \"),n(\"b-badge\",{attrs:{variant:\"danger\"}},[t._v(\"2\")]),t._v(\"\\n            预发布\\n            \"),n(\"b-badge\",{attrs:{variant:\"danger\"}},[t._v(\"3\")]),t._v(\"\\n            测试验证\\n            \"),n(\"b-badge\",{attrs:{variant:\"danger\"}},[t._v(\"4\")]),t._v(\"\\n            线上发布\\n            \"),n(\"b-badge\",{attrs:{variant:\"danger\"}},[t._v(\"5\")]),t._v(\"\\n            回归验证\\n        \")],1)],1),t._v(\" \"),n(\"router-view\")],1)},i=[],a={render:s,staticRenderFns:i};e.a=a},QsjY:function(t,e,n){\"use strict\";var s=n(\"Dd8w\"),i=n.n(s),a=[{key:\"id\",label:\"实例ID\"},{key:\"name\",label:\"实例名称\"},{key:\"gitBranch\",label:\"git分支\"},{key:\"status\",label:\"状态\"},\"operation\"];e.a={name:\"TacInstPublish\",data:function(){return{instId:0,msCode:\"\",prePublish:{jarVersion:\"\"},publish:{jarVersion:\"\"},file:null,fields:a,msInstListItems:[],currentInst:{id:0,name:\"\",gitBranch:\"\",action:1}}},mounted:function(){if(this.msCode=this.$route.params.msCode,!this.msCode)return void this.$router.push({path:\"/tacMs/list\"});this.getMsInstInfo(this.msCode),this.getMsInstList(this.msCode)},methods:{onGitPrePublish:function(t){var e=this;this.$http.get(\"/api/inst/gitPrePublish\",{params:{instId:t}}).then(function(t){t.json().then(function(t){console.log(t),t.success?(e.$toastr.s(\"预发布成功\"),e.getMsInstList(e.msCode)):e.$toastr.e(data.msgInfo)})})},onClickIntEdit:function(t){this.currentInst={name:t.name,gitBranch:t.gitBranch,action:2,id:t.id},this.$refs.modalinst.show()},handleInstOk:function(t){var e=this;t.preventDefault();var n=i()({},this.currentInst),s=n.name,a=n.gitBranch,r=n.id;if(s&&a){var o={name:s,gitBranch:a,msCode:this.msCode,id:r};1==this.currentInst.action?this.$http.post(\"/api/inst/create\",o).then(function(t){t.json().then(function(t){t.success?(e.$toastr.s(\"创建成功\"),e.$refs.modalinst.hide(),e.getMsInstList(e.msCode)):e.$toastr.e(t.msgInfo)})}):(o.id=r,this.$http.post(\"/api/inst/update\",o).then(function(t){t.json().then(function(t){t.success?(e.$refs.modalinst.hide(),e.getMsInstList(e.msCode)):e.$toastr.e(t.msgInfo)})}))}},getMsInstInfo:function(t){var e=this;this.$http.get(\"/api/inst/info/\"+t).then(function(t){t.json().then(function(t){var n=t.data;null!=n&&(e.instId=n.id,e.prePublish.jarVersion=n.prePublishJarVersion,e.publish.jarVersion=n.jarVersion)})})},getMsInstList:function(t){var e=this;this.$http.get(\"/api/inst/list/\"+t).then(function(t){t.json().then(function(t){e.msInstListItems=t.data,console.log(t.data)})})},onPrePublish:function(t){var e=this;if(null==this.file)return void this.$toastr.e(\"缺少文件\");var n=new FormData;n.append(\"msCode\",t),n.append(\"file\",this.file),n.append(\"instId\",this.instId);var s={headers:{\"Content-Type\":\"multipart/form-data\"}};this.$http.post(\"/api/inst/prePublish\",n,s).then(function(n){n.json().then(function(n){n.success?(e.getMsInstInfo(t),e.$toastr.s(\"预发布成功\")):e.$toastr.e(n.msgInfo)})})},onPublish:function(t,e){var n=this;this.$http.post(\"/api/inst/publish\",null,{params:{msCode:t,instId:e}}).then(function(t){t.json().then(function(t){t.success?(n.$toastr.s(\"发布成功\"),n.getMsInstList(n.msCode)):n.$toastr.e(t.msgInfo)})})}}}},Qzvh:function(t,e){},R7F2:function(t,e,n){\"use strict\";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",[n(\"span\",[t._v(\"服务编码: \"+t._s(t.msCode))]),t._v(\" \"),n(\"span\",[t._v(\"实例ID: \"+t._s(t.instId))]),t._v(\" \"),n(\"b-row\",[n(\"b-col\",{attrs:{cols:\"3\"}},[n(\"span\",[t._v(\"\\n                请求参数\\n            \")]),t._v(\" \"),n(\"TacJSONEditor\",{ref:\"checkParamsEditor\"})],1),t._v(\" \"),n(\"b-col\",{attrs:{cols:\"1\"}},[n(\"b-button\",{style:{width:\"100%\"},attrs:{size:\"sm\",variant:\"danger\"},on:{click:function(e){t.test()}}},[t._v(\"\\n                测试\\n            \")])],1),t._v(\" \"),n(\"b-col\",{attrs:{cols:\"8\"}},[n(\"span\",[t._v(\"\\n                结果\\n            \")]),t._v(\" \"),n(\"TacJSONEditor\",{ref:\"checkResultEditor\"})],1)],1),t._v(\" \"),n(\"hr\"),t._v(\" \"),n(\"div\",[n(\"h5\",[t._v(\"日志\")]),t._v(\" \"),n(\"p\",{staticClass:\"logResult\"},[t._v(\"\\n            \"+t._s(t.logResult)+\"\\n        \")])])],1)},i=[],a={render:s,staticRenderFns:i};e.a=a},UJD0:function(t,e){},WLU6:function(t,e,n){\"use strict\";function s(t){n(\"KJjl\")}var i=n(\"/lMo\"),a=n(\"rooJ\"),r=n(\"VU/8\"),o=s,c=r(i.a,a.a,!1,o,\"data-v-7b1ca360\",null);e.a=c.exports},WOXM:function(t,e,n){\"use strict\";function s(t){n(\"LJGJ\")}var i=n(\"5njQ\"),a=n(\"Pibc\"),r=n(\"VU/8\"),o=s,c=r(i.a,a.a,!1,o,\"data-v-3bfbdc0d\",null);e.a=c.exports},WSQo:function(t,e,n){\"use strict\";var s=function(){var t=this,e=t.$createElement;return(t._self._c||e)(\"div\",{ref:\"jsoneditor\",style:t.styleObj})},i=[],a={render:s,staticRenderFns:i};e.a=a},YCz7:function(t,e,n){\"use strict\";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"b-jumbotron\",{attrs:{header:\"TAC-Console\",lead:\"The Tangram App Container\"}},[n(\"router-link\",{staticClass:\"btn btn-primary\",attrs:{to:\"/tacMs\"}},[t._v(\"TacMicroService\")])],1)},i=[],a={render:s,staticRenderFns:i};e.a=a},YaEn:function(t,e,n){\"use strict\";var s=n(\"7+uW\"),i=n(\"/ocq\"),a=(n(\"i+dh\"),n(\"lO7g\")),r=n(\"WLU6\"),o=n(\"s22R\"),c=n(\"mQlP\"),u=n(\"WOXM\"),l=n(\"qYvc\"),d=n(\"v276\");s.a.component(\"Home\",a.a),s.a.component(\"TacMs\",r.a),s.a.use(i.a),e.a=new i.a({routes:[{path:\"/\",redirect:\"/home\"},{path:\"/home\",name:\"home\",component:a.a},{path:\"/tacMs\",redirect:\"/tacMs/list\",component:r.a,children:[{path:\"list\",component:o.a},{path:\"new\",name:\"newMs\",component:c.a},{path:\"edit/:code\",name:\"editMs\",component:c.a}]},{path:\"/tacInst\",component:u.a,redirect:\"/tacMs/list\",children:[{name:\"msInstPublish\",path:\"publish/:msCode\",component:l.a},{path:\"publishcheck\",name:\"instTest\",component:d.a}]}]})},a0Fk:function(t,e,n){\"use strict\";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",[t.show?n(\"b-form\",{on:{submit:t.onSubmit,reset:t.onReset}},[n(\"b-form-group\",{directives:[{name:\"show\",rawName:\"v-show\",value:!1,expression:\"false\"}],attrs:{label:\"服务ID\"}},[n(\"b-form-input\",{attrs:{id:\"msId\",type:\"text\",readonly:\"\"},model:{value:t.form.id,callback:function(e){t.$set(t.form,\"id\",e)},expression:\"form.id\"}})],1),t._v(\" \"),n(\"b-form-group\",{attrs:{id:\"msCode\",label:\"服务编码\",description:\"服务编码，唯一\"}},[n(\"b-form-input\",{attrs:{id:\"msCode\",type:\"text\",required:\"\",placeholder:\"msCode\",readonly:t.isEdit},model:{value:t.form.code,callback:function(e){t.$set(t.form,\"code\",e)},expression:\"form.code\"}})],1),t._v(\" \"),n(\"b-form-group\",{attrs:{id:\"name\",label:\"名称\",description:\"服务名称\"}},[n(\"b-form-input\",{attrs:{id:\"name\",type:\"text\",required:\"\",placeholder:\"name\"},model:{value:t.form.name,callback:function(e){t.$set(t.form,\"name\",e)},expression:\"form.name\"}})],1),t._v(\" \"),n(\"b-form-group\",{attrs:{id:\"gitRepo\",label:\"git仓库\",description:\"git仓库地址\"}},[n(\"b-form-input\",{attrs:{id:\"gitRepo\",type:\"text\",placeholder:\"\"},model:{value:t.form.gitRepo,callback:function(e){t.$set(t.form,\"gitRepo\",e)},expression:\"form.gitRepo\"}})],1),t._v(\" \"),n(\"b-button\",{attrs:{type:\"submit\",variant:\"primary\"}},[t._v(\"Submit\")]),t._v(\" \"),n(\"b-button\",{attrs:{type:\"reset\",variant:\"danger\"}},[t._v(\"Reset\")])],1):t._e()],1)},i=[],a={render:s,staticRenderFns:i};e.a=a},cGpD:function(t,e,n){\"use strict\";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",[n(\"div\",{staticClass:\"panel panel-warning\"},[n(\"div\",{staticClass:\"panel-heading\"},[n(\"h3\",{staticClass:\"panel-title\"},[t._v(\"服务列表\")]),t._v(\" \"),n(\"router-link\",{staticClass:\"btn btn-warning\",attrs:{to:{name:\"newMs\"}}},[t._v(\"新建服务\")])],1),t._v(\" \"),n(\"div\",{staticClass:\"panel-body\"},[n(\"b-table\",{attrs:{striped:\"\",hover:\"\",items:t.items,fields:t.fields},scopedSlots:t._u([{key:\"operation\",fn:function(e){return[n(\"b-button-group\",{staticClass:\"spanButtons\",attrs:{size:\"sm\"}},[n(\"router-link\",{staticClass:\"btn btn-warning\",attrs:{to:{name:\"editMs\",params:e.item}}},[t._v(\"编辑\")]),t._v(\" \"),n(\"router-link\",{staticClass:\"btn btn-success\",attrs:{to:{name:\"msInstPublish\",params:{msCode:e.item.code}}}},[t._v(\"实例发布\")])],1)]}}])})],1)])])},i=[],a={render:s,staticRenderFns:i};e.a=a},eA4R:function(t,e,n){\"use strict\";var s=n(\"Dd8w\"),i=n.n(s);e.a={data:function(){return{form:{id:0,code:\"\",name:\"\",gitRepo:\"\"},show:!0,isEdit:!1}},mounted:function(){var t=this.$route.params;t&&t.code&&(this.isEdit=!0,this.form=i()({},this.$route.params))},methods:{handleSave:function(){var t=this,e={id:this.form.id,code:this.form.code,name:this.form.name,gitRepo:this.form.gitRepo};this.$http.post(\"/api/ms/update\",e).then(function(e){e.json().then(function(e){e.success?(t.$toastr.s(\"保存成功\"),t.$router.push({path:\"/tacMs/list\"})):t.$toastr.e(e.msgInfo)})})},handleCreate:function(){var t=this,e={code:this.form.code,name:this.form.name};this.$http.post(\"/api/ms/create\",e).then(function(e){e.json().then(function(e){e.success?(t.$toastr.s(\"新增成功\"),t.$router.push({path:\"/tacMs/list\"})):t.$toastr.e(e.msgInfo)})})},onSubmit:function(t){t.preventDefault(),this.isEdit?this.handleSave():this.handleCreate()},onReset:function(t){var e=this;t.preventDefault(),this.form.code=\"\",this.form.name=\"\",this.form.gitRepo=\"\",this.$nextTick(function(){e.show=!0})}}}},gkSs:function(t,e){},\"i+dh\":function(t,e,n){\"use strict\";function s(t){n(\"JhBm\")}var i=n(\"yNMo\"),a=n(\"GWm9\"),r=n(\"VU/8\"),o=s,c=r(i.a,a.a,!1,o,\"data-v-afa07f3c\",null);e.a=c.exports},jEJH:function(t,e,n){\"use strict\";var s=n(\"mK26\"),i=n.n(s);e.a={name:\"TacJSONEditor\",props:{styleObj:{type:Object,default:function(){return{width:\"100%\",height:\"500px\"}}},options:{type:Object,default:function(){return{modes:[\"tree\",\"view\",\"code\"]}}}},editor:null,data:function(){return{}},methods:{setJSON:function(t){this.editor.set(t),console.log(this)},getJSON:function(){return this.editor.get()}},mounted:function(){var t=this.$refs.jsoneditor;this.editor=new i.a(t,this.options)}}},kLHE:function(t,e,n){\"use strict\";var s=[],i=[{key:\"code\",label:\"服务编码\"},{key:\"name\",label:\"服务名称\"},\"operation\"];e.a={name:\"TacMsList\",data:function(){return{items:s,fields:i}},methods:{offlineMs:function(t){var e=this;this.$http.post(\"/api/ms/offline\",null,{params:{msCode:t}}).then(function(t){e.loadAllMs()})},loadAllMs:function(){var t=this;this.$http.get(\"/api/ms/list\").then(function(e){e.json().then(function(e){e.success&&(t.items=e.data)})})}},mounted:function(){this.loadAllMs()}}},kgf9:function(t,e,n){\"use strict\";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"tacInstPublish\"},[n(\"b-row\",[n(\"b-col\",[n(\"h3\",[t._v(\"服务编码:\"+t._s(t.msCode)+\" 实例ID: \"+t._s(t.instId)+\" \")])])],1),t._v(\" \"),n(\"hr\"),t._v(\" \"),n(\"b-row\",[n(\"b-col\",[n(\"b-row\",[n(\"b-col\",[n(\"h4\",[t._v(\"预发布\")]),t._v(\" 版本: \"+t._s(t.prePublish.jarVersion)+\" \")]),t._v(\" \"),n(\"b-col\",[n(\"b-form-file\",{attrs:{state:Boolean(t.file),placeholder:\"Choose a file...\"},model:{value:t.file,callback:function(e){t.file=e},expression:\"file\"}})],1),t._v(\" \"),n(\"b-col\",[n(\"b-button\",{attrs:{size:\"sm\",variant:\"warning\"},on:{click:function(e){t.onPrePublish(t.msCode)}}},[t._v(\"\\n                        预发布\\n                    \")]),t._v(\" \"),n(\"router-link\",{attrs:{to:{path:\"/tacInst/publishcheck\",query:{msCode:t.msCode,instId:t.instId,action:\"preTest\"}},target:\"_blank\"}},[n(\"b-button\",{attrs:{size:\"sm\",variant:\"warning\"}},[t._v(\"\\n                            预发布测试\\n                        \")])],1)],1)],1)],1),t._v(\" \"),n(\"b-col\",[n(\"b-row\",[n(\"b-col\",[n(\"h4\",[t._v(\"线上发布:\")]),t._v(\" 版本: \"+t._s(t.publish.jarVersion)+\" \")]),t._v(\" \"),n(\"b-col\",[n(\"b-button\",{attrs:{size:\"sm\",variant:\"danger\"},on:{click:function(e){t.onPublish(t.msCode,t.instId)}}},[t._v(\"\\n                        正式发布\\n                    \")]),t._v(\" \"),n(\"router-link\",{attrs:{to:{path:\"/tacInst/publishcheck\",query:{msCode:t.msCode,instId:t.instId,action:\"onlineTest\"}},target:\"_blank\"}},[n(\"b-button\",{attrs:{size:\"sm\",variant:\"danger\"}},[t._v(\"\\n                            线上回归\\n                        \")])],1)],1)],1)],1)],1),t._v(\" \"),n(\"hr\"),t._v(\" \"),n(\"div\",[n(\"b-row\",[n(\"b-col\",[n(\"h4\",[t._v(\"Git分支实例\\n                    \"),n(\"b-button\",{directives:[{name:\"b-modal\",rawName:\"v-b-modal.modal-inst\",modifiers:{\"modal-inst\":!0}}],attrs:{size:\"sm\",variant:\"warning\"}},[t._v(\"\\n                        新建实例\\n                    \")])],1)])],1),t._v(\" \"),n(\"b-row\",[n(\"b-col\",[n(\"div\",{staticClass:\"panel panel-warning\"},[n(\"div\",{staticClass:\"panel-body\"},[n(\"b-table\",{attrs:{striped:\"\",hover:\"\",items:t.msInstListItems,fields:t.fields},scopedSlots:t._u([{key:\"status\",fn:function(e){return[0==e.item.status?n(\"span\",[t._v(\"新建\")]):1==e.item.status?n(\"span\",[t._v(\"预发布\")]):2==e.item.status?n(\"span\",[t._v(\"正式发布\")]):t._e()]}},{key:\"operation\",fn:function(e){return[n(\"b-button-group\",{staticClass:\"spanButtons\",attrs:{size:\"sm\"}},[n(\"b-button\",{attrs:{size:\"sm\",variant:\"warning\"},on:{click:function(n){t.onClickIntEdit(e.item)}}},[t._v(\"\\n                                        编辑\\n                                    \")])],1),t._v(\" \"),n(\"b-button-group\",{staticClass:\"spanButtons\",attrs:{size:\"sm\"}},[n(\"b-button\",{attrs:{size:\"sm\",variant:\"warning\"},on:{click:function(n){t.onGitPrePublish(e.item.id)}}},[t._v(\"\\n                                        预发布\\n                                    \")]),t._v(\" \"),n(\"router-link\",{attrs:{to:{path:\"/tacInst/publishcheck\",query:{msCode:t.msCode,instId:e.item.id,action:\"preTest\"}},target:\"_blank\"}},[n(\"b-button\",{attrs:{size:\"sm\",variant:\"warning\"}},[t._v(\"\\n                                            预发布测试\\n                                        \")])],1)],1),t._v(\" \"),n(\"b-button-group\",{staticClass:\"spanButtons\",attrs:{size:\"sm\"}},[n(\"b-button\",{attrs:{size:\"sm\",variant:\"danger\"},on:{click:function(n){t.onPublish(t.msCode,e.item.id)}}},[t._v(\"\\n                                        正式发布\\n                                    \")]),t._v(\" \"),n(\"router-link\",{attrs:{to:{path:\"/tacInst/publishcheck\",query:{msCode:t.msCode,instId:e.item.id,action:\"onlineTest\"}},target:\"_blank\"}},[n(\"b-button\",{attrs:{size:\"sm\",variant:\"danger\"}},[t._v(\"\\n                                            线上回归\\n                                        \")])],1)],1)]}}])})],1)])])],1)],1),t._v(\" \"),n(\"b-modal\",{ref:\"modalinst\",attrs:{id:\"modal-inst\",title:\"实例\"},on:{ok:t.handleInstOk}},[n(\"form\",{on:{submit:function(e){e.stopPropagation(),e.preventDefault(),t.handleInstSubmit(e)}}},[n(\"b-form-group\",{attrs:{id:\"name\",label:\"实例名称\",description:\"\"}},[n(\"b-form-input\",{attrs:{type:\"text\",placeholder:\"实例名称\"},model:{value:t.currentInst.name,callback:function(e){t.$set(t.currentInst,\"name\",e)},expression:\"currentInst.name\"}})],1),t._v(\" \"),n(\"b-form-group\",{attrs:{id:\"gitBranch\",label:\"git分支\",description:\"\"}},[n(\"b-form-input\",{attrs:{type:\"text\",placeholder:\"git分支\"},model:{value:t.currentInst.gitBranch,callback:function(e){t.$set(t.currentInst,\"gitBranch\",e)},expression:\"currentInst.gitBranch\"}})],1)],1)])],1)},i=[],a={render:s,staticRenderFns:i};e.a=a},kllW:function(t,e){},l8M3:function(t,e){t.exports={$schema:\"http://json-schema.org/draft-06/schema#\",$id:\"http://json-schema.org/draft-06/schema#\",title:\"Core schema meta-schema\",definitions:{schemaArray:{type:\"array\",minItems:1,items:{$ref:\"#\"}},nonNegativeInteger:{type:\"integer\",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:\"#/definitions/nonNegativeInteger\"},{default:0}]},simpleTypes:{enum:[\"array\",\"boolean\",\"integer\",\"null\",\"number\",\"object\",\"string\"]},stringArray:{type:\"array\",items:{type:\"string\"},uniqueItems:!0,default:[]}},type:[\"object\",\"boolean\"],properties:{$id:{type:\"string\",format:\"uri-reference\"},$schema:{type:\"string\",format:\"uri\"},$ref:{type:\"string\",format:\"uri-reference\"},title:{type:\"string\"},description:{type:\"string\"},default:{},examples:{type:\"array\",items:{}},multipleOf:{type:\"number\",exclusiveMinimum:0},maximum:{type:\"number\"},exclusiveMaximum:{type:\"number\"},minimum:{type:\"number\"},exclusiveMinimum:{type:\"number\"},maxLength:{$ref:\"#/definitions/nonNegativeInteger\"},minLength:{$ref:\"#/definitions/nonNegativeIntegerDefault0\"},pattern:{type:\"string\",format:\"regex\"},additionalItems:{$ref:\"#\"},items:{anyOf:[{$ref:\"#\"},{$ref:\"#/definitions/schemaArray\"}],default:{}},maxItems:{$ref:\"#/definitions/nonNegativeInteger\"},minItems:{$ref:\"#/definitions/nonNegativeIntegerDefault0\"},uniqueItems:{type:\"boolean\",default:!1},contains:{$ref:\"#\"},maxProperties:{$ref:\"#/definitions/nonNegativeInteger\"},minProperties:{$ref:\"#/definitions/nonNegativeIntegerDefault0\"},required:{$ref:\"#/definitions/stringArray\"},additionalProperties:{$ref:\"#\"},definitions:{type:\"object\",additionalProperties:{$ref:\"#\"},default:{}},properties:{type:\"object\",additionalProperties:{$ref:\"#\"},default:{}},patternProperties:{type:\"object\",additionalProperties:{$ref:\"#\"},default:{}},dependencies:{type:\"object\",additionalProperties:{anyOf:[{$ref:\"#\"},{$ref:\"#/definitions/stringArray\"}]}},propertyNames:{$ref:\"#\"},const:{},enum:{type:\"array\",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:\"#/definitions/simpleTypes\"},{type:\"array\",items:{$ref:\"#/definitions/simpleTypes\"},minItems:1,uniqueItems:!0}]},format:{type:\"string\"},allOf:{$ref:\"#/definitions/schemaArray\"},anyOf:{$ref:\"#/definitions/schemaArray\"},oneOf:{$ref:\"#/definitions/schemaArray\"},not:{$ref:\"#\"}},default:{}}},lO7g:function(t,e,n){\"use strict\";function s(t){n(\"2Y9o\")}var i=n(\"Fs8J\"),a=n(\"YCz7\"),r=n(\"VU/8\"),o=s,c=r(i.a,a.a,!1,o,\"data-v-919c02ee\",null);e.a=c.exports},mERs:function(t,e){},mQlP:function(t,e,n){\"use strict\";function s(t){n(\"Qzvh\")}var i=n(\"eA4R\"),a=n(\"a0Fk\"),r=n(\"VU/8\"),o=s,c=r(i.a,a.a,!1,o,\"data-v-45bd5a34\",null);e.a=c.exports},mbCN:function(t,e){},nyIL:function(t,e,n){\"use strict\";function s(t){n(\"UJD0\")}var i=n(\"jEJH\"),a=n(\"WSQo\"),r=n(\"VU/8\"),o=s,c=r(i.a,a.a,!1,o,\"data-v-3d28f83e\",null);e.a=c.exports},q6u6:function(t,e,n){\"use strict\";n(\"nyIL\");e.a={name:\"TacInstPublishCheck\",mounted:function(){this.paramsEditor=this.$refs.checkParamsEditor,this.resultEditor=this.$refs.checkResultEditor;var t=this.$route.query,e=t.instId,n=t.msCode,s=t.action;this.instId=e,this.msCode=n,this.action=s},methods:{test:function(){var t=this.paramsEditor.getJSON();\"preTest\"==this.action?this.handlePreTest(t):this.handleOnlineTest(t)},handlePreTest:function(t){var e=this,n={instId:this.instId,msCode:this.msCode,params:t};this.$http.post(\"/api/inst/preTest\",n).then(function(t){t.json().then(function(t){if(t.success){console.log(t);var n=t.data.msgInfo;t.data.msgInfo=\"\",e.logResult=n,e.resultEditor.setJSON(t.data)}else e.$toastr.e(t.msgInfo)})})},handleOnlineTest:function(t){var e=this,n={instId:this.instId,msCode:this.msCode,params:t};this.$http.post(\"/api/inst/onlineTest\",n).then(function(t){t.json().then(function(t){if(t.success){console.log(t);var n=t.msgInfo;t.msgInfo=\"\",e.logResult=n,e.resultEditor.setJSON(t)}else e.$toastr.e(t.msgInfo)})})}},data:function(){return{instId:0,msCode:\"\",action:\"\",logResult:\"\"}}}},qYvc:function(t,e,n){\"use strict\";function s(t){n(\"wJiV\")}var i=n(\"QsjY\"),a=n(\"kgf9\"),r=n(\"VU/8\"),o=s,c=r(i.a,a.a,!1,o,\"data-v-334bc87c\",null);e.a=c.exports},qb6w:function(t,e){},rooJ:function(t,e,n){\"use strict\";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"b-container\",{staticClass:\"tacMs\"},[n(\"router-view\")],1)},i=[],a={render:s,staticRenderFns:i};e.a=a},s22R:function(t,e,n){\"use strict\";function s(t){n(\"mbCN\")}var i=n(\"kLHE\"),a=n(\"cGpD\"),r=n(\"VU/8\"),o=s,c=r(i.a,a.a,!1,o,\"data-v-5621612b\",null);e.a=c.exports},v276:function(t,e,n){\"use strict\";function s(t){n(\"wpUF\")}var i=n(\"q6u6\"),a=n(\"R7F2\"),r=n(\"VU/8\"),o=s,c=r(i.a,a.a,!1,o,\"data-v-13be33e9\",null);e.a=c.exports},wJiV:function(t,e){},wpUF:function(t,e){},xJD8:function(t,e,n){\"use strict\";e.a={name:\"app\"}},yNMo:function(t,e,n){\"use strict\";n(\"lO7g\");e.a={name:\"TacConsole\",data:function(){return{msg:\"Welcome to Your Vue.js App\"}},mounted:function(){this.$toastr.defaultPosition=\"toast-top-center\"}}},zj2Q:function(t,e){}},[\"NHnr\"]);\n//# sourceMappingURL=app.606b53e74ca0c7067159.js.map"
  },
  {
    "path": "tac-console/src/main/resources/static/js/manifest.58ce01f7a6fd036b4f8d.js",
    "content": "!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,i){for(var u,a,f,s=0,l=[];s<t.length;s++)a=t[s],o[a]&&l.push(o[a][0]),o[a]=0;for(u in c)Object.prototype.hasOwnProperty.call(c,u)&&(e[u]=c[u]);for(r&&r(t,c,i);l.length;)l.shift()();if(i)for(s=0;s<i.length;s++)f=n(n.s=i[s]);return f};var t={},o={2:0};n.e=function(e){function r(){u.onerror=u.onload=null,clearTimeout(a);var n=o[e];0!==n&&(n&&n[1](new Error(\"Loading chunk \"+e+\" failed.\")),o[e]=void 0)}var t=o[e];if(0===t)return new Promise(function(e){e()});if(t)return t[2];var c=new Promise(function(n,r){t=o[e]=[n,r]});t[2]=c;var i=document.getElementsByTagName(\"head\")[0],u=document.createElement(\"script\");u.type=\"text/javascript\",u.charset=\"utf-8\",u.async=!0,u.timeout=12e4,n.nc&&u.setAttribute(\"nonce\",n.nc),u.src=n.p+\"static/js/\"+e+\".\"+{0:\"8940c3c560d73d0a0b28\",1:\"606b53e74ca0c7067159\"}[e]+\".js\";var a=setTimeout(r,12e4);return u.onerror=u.onload=r,i.appendChild(u),c},n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,\"a\",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p=\"/\",n.oe=function(e){throw console.error(e),e}}([]);\n//# sourceMappingURL=manifest.58ce01f7a6fd036b4f8d.js.map"
  },
  {
    "path": "tac-console/src/main/resources/static/js/vendor.8940c3c560d73d0a0b28.js",
    "content": "webpackJsonp([0],{\"+7mA\":function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),h=\"valid\"+r,d=\"errs__\"+r,f=e.util.copy(e),p=\"\";f.level++;var m=\"valid\"+f.level,g=\"key\"+r,v=\"idx\"+r,y=f.dataLevel=e.dataLevel+1,b=\"data\"+y,w=\"dataProperties\"+r,C=Object.keys(s||{}),A=e.schema.patternProperties||{},E=Object.keys(A),x=e.schema.additionalProperties,F=C.length||E.length,S=!1===x,$=\"object\"==typeof x&&Object.keys(x).length,k=e.opts.removeAdditional,_=S||$||k,B=e.opts.ownProperties,D=e.baseId,T=e.schema.required;if(T&&(!e.opts.v5||!T.$data)&&T.length<e.opts.loopRequired)var L=e.util.toHash(T);if(e.opts.patternGroups)var O=e.schema.patternGroups||{},R=Object.keys(O);if(i+=\"var \"+d+\" = errors;var \"+m+\" = true;\",B&&(i+=\" var \"+w+\" = undefined;\"),_){if(i+=B?\" \"+w+\" = \"+w+\" || Object.keys(\"+u+\"); for (var \"+v+\"=0; \"+v+\"<\"+w+\".length; \"+v+\"++) { var \"+g+\" = \"+w+\"[\"+v+\"]; \":\" for (var \"+g+\" in \"+u+\") { \",F){if(i+=\" var isAdditional\"+r+\" = !(false \",C.length)if(C.length>5)i+=\" || validate.schema\"+a+\"[\"+g+\"] \";else{var P=C;if(P)for(var M,I=-1,j=P.length-1;I<j;)M=P[I+=1],i+=\" || \"+g+\" == \"+e.util.toQuotedString(M)+\" \"}if(E.length){var N=E;if(N)for(var H,V=-1,W=N.length-1;V<W;)H=N[V+=1],i+=\" || \"+e.usePattern(H)+\".test(\"+g+\") \"}if(e.opts.patternGroups&&R.length){var z=R;if(z)for(var U,V=-1,K=z.length-1;V<K;)U=z[V+=1],i+=\" || \"+e.usePattern(U)+\".test(\"+g+\") \"}i+=\" ); if (isAdditional\"+r+\") { \"}if(\"all\"==k)i+=\" delete \"+u+\"[\"+g+\"]; \";else{var q=e.errorPath,G=\"' + \"+g+\" + '\";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers)),S)if(k)i+=\" delete \"+u+\"[\"+g+\"]; \";else{i+=\" \"+m+\" = false; \";var J=l;l=e.errSchemaPath+\"/additionalProperties\";var Q=Q||[];Q.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'additionalProperties' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { additionalProperty: '\"+G+\"' } \",!1!==e.opts.messages&&(i+=\" , message: 'should NOT have additional properties' \"),e.opts.verbose&&(i+=\" , schema: false , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var Y=i;i=Q.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+Y+\"]); \":i+=\" validate.errors = [\"+Y+\"]; return false; \":i+=\" var err = \"+Y+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",l=J,c&&(i+=\" break; \")}else if($)if(\"failing\"==k){i+=\" var \"+d+\" = errors;  \";var X=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.schema=x,f.schemaPath=e.schemaPath+\".additionalProperties\",f.errSchemaPath=e.errSchemaPath+\"/additionalProperties\",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers);var Z=u+\"[\"+g+\"]\";f.dataPathArr[y]=g;var ee=e.validate(f);f.baseId=D,e.util.varOccurences(ee,b)<2?i+=\" \"+e.util.varReplace(ee,b,Z)+\" \":i+=\" var \"+b+\" = \"+Z+\"; \"+ee+\" \",i+=\" if (!\"+m+\") { errors = \"+d+\"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete \"+u+\"[\"+g+\"]; }  \",e.compositeRule=f.compositeRule=X}else{f.schema=x,f.schemaPath=e.schemaPath+\".additionalProperties\",f.errSchemaPath=e.errSchemaPath+\"/additionalProperties\",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers);var Z=u+\"[\"+g+\"]\";f.dataPathArr[y]=g;var ee=e.validate(f);f.baseId=D,e.util.varOccurences(ee,b)<2?i+=\" \"+e.util.varReplace(ee,b,Z)+\" \":i+=\" var \"+b+\" = \"+Z+\"; \"+ee+\" \",c&&(i+=\" if (!\"+m+\") break; \")}e.errorPath=q}F&&(i+=\" } \"),i+=\" }  \",c&&(i+=\" if (\"+m+\") { \",p+=\"}\")}var te=e.opts.useDefaults&&!e.compositeRule;if(C.length){var ne=C;if(ne)for(var M,ie=-1,re=ne.length-1;ie<re;){M=ne[ie+=1];var oe=s[M];if(e.util.schemaHasRules(oe,e.RULES.all)){var se=e.util.getProperty(M),Z=u+se,ae=te&&void 0!==oe.default;f.schema=oe,f.schemaPath=a+se,f.errSchemaPath=l+\"/\"+e.util.escapeFragment(M),f.errorPath=e.util.getPath(e.errorPath,M,e.opts.jsonPointers),f.dataPathArr[y]=e.util.toQuotedString(M);var ee=e.validate(f);if(f.baseId=D,e.util.varOccurences(ee,b)<2){ee=e.util.varReplace(ee,b,Z);var le=Z}else{var le=b;i+=\" var \"+b+\" = \"+Z+\"; \"}if(ae)i+=\" \"+ee+\" \";else{if(L&&L[M]){i+=\" if ( \"+le+\" === undefined \",B&&(i+=\" || ! Object.prototype.hasOwnProperty.call(\"+u+\", '\"+e.util.escapeQuotes(M)+\"') \"),i+=\") { \"+m+\" = false; \";var q=e.errorPath,J=l,ce=e.util.escapeQuotes(M);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(q,M,e.opts.jsonPointers)),l=e.errSchemaPath+\"/required\";var Q=Q||[];Q.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { missingProperty: '\"+ce+\"' } \",!1!==e.opts.messages&&(i+=\" , message: '\",e.opts._errorDataPathProperty?i+=\"is a required property\":i+=\"should have required property \\\\'\"+ce+\"\\\\'\",i+=\"' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var Y=i;i=Q.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+Y+\"]); \":i+=\" validate.errors = [\"+Y+\"]; return false; \":i+=\" var err = \"+Y+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",l=J,e.errorPath=q,i+=\" } else { \"}else c?(i+=\" if ( \"+le+\" === undefined \",B&&(i+=\" || ! Object.prototype.hasOwnProperty.call(\"+u+\", '\"+e.util.escapeQuotes(M)+\"') \"),i+=\") { \"+m+\" = true; } else { \"):(i+=\" if (\"+le+\" !== undefined \",B&&(i+=\" &&   Object.prototype.hasOwnProperty.call(\"+u+\", '\"+e.util.escapeQuotes(M)+\"') \"),i+=\" ) { \");i+=\" \"+ee+\" } \"}}c&&(i+=\" if (\"+m+\") { \",p+=\"}\")}}if(E.length){var ue=E;if(ue)for(var H,he=-1,de=ue.length-1;he<de;){H=ue[he+=1];var oe=A[H];if(e.util.schemaHasRules(oe,e.RULES.all)){f.schema=oe,f.schemaPath=e.schemaPath+\".patternProperties\"+e.util.getProperty(H),f.errSchemaPath=e.errSchemaPath+\"/patternProperties/\"+e.util.escapeFragment(H),i+=B?\" \"+w+\" = \"+w+\" || Object.keys(\"+u+\"); for (var \"+v+\"=0; \"+v+\"<\"+w+\".length; \"+v+\"++) { var \"+g+\" = \"+w+\"[\"+v+\"]; \":\" for (var \"+g+\" in \"+u+\") { \",i+=\" if (\"+e.usePattern(H)+\".test(\"+g+\")) { \",f.errorPath=e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers);var Z=u+\"[\"+g+\"]\";f.dataPathArr[y]=g;var ee=e.validate(f);f.baseId=D,e.util.varOccurences(ee,b)<2?i+=\" \"+e.util.varReplace(ee,b,Z)+\" \":i+=\" var \"+b+\" = \"+Z+\"; \"+ee+\" \",c&&(i+=\" if (!\"+m+\") break; \"),i+=\" } \",c&&(i+=\" else \"+m+\" = true; \"),i+=\" }  \",c&&(i+=\" if (\"+m+\") { \",p+=\"}\")}}}if(e.opts.patternGroups&&R.length){var fe=R;if(fe)for(var U,pe=-1,me=fe.length-1;pe<me;){U=fe[pe+=1];var ge=O[U],oe=ge.schema;if(e.util.schemaHasRules(oe,e.RULES.all)){f.schema=oe,f.schemaPath=e.schemaPath+\".patternGroups\"+e.util.getProperty(U)+\".schema\",f.errSchemaPath=e.errSchemaPath+\"/patternGroups/\"+e.util.escapeFragment(U)+\"/schema\",i+=\" var pgPropCount\"+r+\" = 0;  \",i+=B?\" \"+w+\" = \"+w+\" || Object.keys(\"+u+\"); for (var \"+v+\"=0; \"+v+\"<\"+w+\".length; \"+v+\"++) { var \"+g+\" = \"+w+\"[\"+v+\"]; \":\" for (var \"+g+\" in \"+u+\") { \",i+=\" if (\"+e.usePattern(U)+\".test(\"+g+\")) { pgPropCount\"+r+\"++; \",f.errorPath=e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers);var Z=u+\"[\"+g+\"]\";f.dataPathArr[y]=g;var ee=e.validate(f);f.baseId=D,e.util.varOccurences(ee,b)<2?i+=\" \"+e.util.varReplace(ee,b,Z)+\" \":i+=\" var \"+b+\" = \"+Z+\"; \"+ee+\" \",c&&(i+=\" if (!\"+m+\") break; \"),i+=\" } \",c&&(i+=\" else \"+m+\" = true; \"),i+=\" }  \",c&&(i+=\" if (\"+m+\") { \",p+=\"}\");var ve=ge.minimum,ye=ge.maximum;if(void 0!==ve||void 0!==ye){i+=\" var \"+h+\" = true; \";var J=l;if(void 0!==ve){var be=ve,we=\"minimum\",Ce=\"less\";i+=\" \"+h+\" = pgPropCount\"+r+\" >= \"+ve+\"; \",l=e.errSchemaPath+\"/patternGroups/minimum\",i+=\"  if (!\"+h+\") {   \";var Q=Q||[];Q.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'patternGroups' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { reason: '\"+we+\"', limit: \"+be+\", pattern: '\"+e.util.escapeQuotes(U)+\"' } \",!1!==e.opts.messages&&(i+=\" , message: 'should NOT have \"+Ce+\" than \"+be+' properties matching pattern \"'+e.util.escapeQuotes(U)+\"\\\"' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var Y=i;i=Q.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+Y+\"]); \":i+=\" validate.errors = [\"+Y+\"]; return false; \":i+=\" var err = \"+Y+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",i+=\" } \",void 0!==ye&&(i+=\" else \")}if(void 0!==ye){var be=ye,we=\"maximum\",Ce=\"more\";i+=\" \"+h+\" = pgPropCount\"+r+\" <= \"+ye+\"; \",l=e.errSchemaPath+\"/patternGroups/maximum\",i+=\"  if (!\"+h+\") {   \";var Q=Q||[];Q.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'patternGroups' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { reason: '\"+we+\"', limit: \"+be+\", pattern: '\"+e.util.escapeQuotes(U)+\"' } \",!1!==e.opts.messages&&(i+=\" , message: 'should NOT have \"+Ce+\" than \"+be+' properties matching pattern \"'+e.util.escapeQuotes(U)+\"\\\"' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var Y=i;i=Q.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+Y+\"]); \":i+=\" validate.errors = [\"+Y+\"]; return false; \":i+=\" var err = \"+Y+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",i+=\" } \"}l=J,c&&(i+=\" if (\"+h+\") { \",p+=\"}\")}}}}return c&&(i+=\" \"+p+\" if (\"+d+\" == errors) {\"),i=e.util.cleanUpCode(i)}},\"+E39\":function(e,t,n){e.exports=!n(\"S82l\")(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},\"+FfA\":function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"2PZM\"),o=n(\"WnFU\"),s={fluid:{type:Boolean,default:!1},containerFluid:{type:Boolean,default:!1},header:{type:String,default:null},headerTag:{type:String,default:\"h1\"},headerLevel:{type:[Number,String],default:\"3\"},lead:{type:String,default:null},leadTag:{type:String,default:\"p\"},tag:{type:String,default:\"div\"},bgVariant:{type:String,default:null},borderVariant:{type:String,default:null},textVariant:{type:String,default:null}};t.a={functional:!0,props:s,render:function(e,t){var s,a=t.props,l=t.data,c=t.slots,u=[],h=c();return(a.header||h.header)&&u.push(e(a.headerTag,{class:i({},\"display-\"+a.headerLevel,Boolean(a.headerLevel))},h.header||a.header)),(a.lead||h.lead)&&u.push(e(a.leadTag,{staticClass:\"lead\"},h.lead||a.lead)),h.default&&u.push(h.default),a.fluid&&(u=[e(o.a,{props:{fluid:a.containerFluid}},u)]),e(a.tag,n.i(r.a)(l,{staticClass:\"jumbotron\",class:(s={\"jumbotron-fluid\":a.fluid},i(s,\"text-\"+a.textVariant,Boolean(a.textVariant)),i(s,\"bg-\"+a.bgVariant,Boolean(a.bgVariant)),i(s,\"border-\"+a.borderVariant,Boolean(a.borderVariant)),i(s,\"border\",Boolean(a.borderVariant)),s)}),u)}}},\"+LpG\":function(e,t,n){\"use strict\";var i,r=[\"en\",\"pt-BR\"],o={en:{array:\"Array\",auto:\"Auto\",appendText:\"Append\",appendTitle:\"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)\",appendSubmenuTitle:\"Select the type of the field to be appended\",appendTitleAuto:\"Append a new field with type 'auto' (Ctrl+Shift+Ins)\",ascending:\"Ascending\",ascendingTitle:\"Sort the childs of this ${type} in ascending order\",actionsMenu:\"Click to open the actions menu (Ctrl+M)\",collapseAll:\"Collapse all fields\",descending:\"Descending\",descendingTitle:\"Sort the childs of this ${type} in descending order\",drag:\"Drag to move this field (Alt+Shift+Arrows)\",duplicateKey:\"duplicate key\",duplicateText:\"Duplicate\",duplicateTitle:\"Duplicate selected fields (Ctrl+D)\",duplicateField:\"Duplicate this field (Ctrl+D)\",empty:\"empty\",expandAll:\"Expand all fields\",expandTitle:\"Click to expand/collapse this field (Ctrl+E). \\nCtrl+Click to expand/collapse including all childs.\",insert:\"Insert\",insertTitle:\"Insert a new field with type 'auto' before this field (Ctrl+Ins)\",insertSub:\"Select the type of the field to be inserted\",object:\"Object\",redo:\"Redo (Ctrl+Shift+Z)\",removeText:\"Remove\",removeTitle:\"Remove selected fields (Ctrl+Del)\",removeField:\"Remove this field (Ctrl+Del)\",sort:\"Sort\",sortTitle:\"Sort the childs of this \",string:\"String\",type:\"Type\",typeTitle:\"Change the type of this field\",openUrl:\"Ctrl+Click or Ctrl+Enter to open url in new window\",undo:\"Undo last action (Ctrl+Z)\",validationCannotMove:\"Cannot move a field into a child of itself\",autoType:'Field type \"auto\". The field type is automatically determined from the value and can be a string, number, boolean, or null.',objectType:'Field type \"object\". An object contains an unordered set of key/value pairs.',arrayType:'Field type \"array\". An array contains an ordered collection of values.',stringType:'Field type \"string\". Field type is not determined from the value, but always returned as string.'},\"pt-BR\":{array:\"Lista\",auto:\"Automatico\",appendText:\"Adicionar\",appendTitle:\"Adicionar novo campo com tipo 'auto' depois deste campo (Ctrl+Shift+Ins)\",appendSubmenuTitle:\"Selecione o tipo do campo a ser adicionado\",appendTitleAuto:\"Adicionar novo campo com tipo 'auto' (Ctrl+Shift+Ins)\",ascending:\"Ascendente\",ascendingTitle:\"Organizar filhor do tipo ${type} em crescente\",actionsMenu:\"Clique para abrir o menu de ações (Ctrl+M)\",collapseAll:\"Fechar todos campos\",descending:\"Descendente\",descendingTitle:\"Organizar o filhos do tipo ${type} em decrescente\",duplicateKey:\"chave duplicada\",drag:\"Arraste para mover este campo (Alt+Shift+Arrows)\",duplicateText:\"Duplicar\",duplicateTitle:\"Duplicar campos selecionados (Ctrl+D)\",duplicateField:\"Duplicar este campo (Ctrl+D)\",empty:\"vazio\",expandAll:\"Expandir todos campos\",expandTitle:\"Clique para expandir/encolher este campo (Ctrl+E). \\nCtrl+Click para expandir/encolher incluindo todos os filhos.\",insert:\"Inserir\",insertTitle:\"Inserir um novo campo do tipo 'auto' antes deste campo (Ctrl+Ins)\",insertSub:\"Selecionar o tipo de campo a ser inserido\",object:\"Objeto\",redo:\"Refazer (Ctrl+Shift+Z)\",removeText:\"Remover\",removeTitle:\"Remover campos selecionados (Ctrl+Del)\",removeField:\"Remover este campo (Ctrl+Del)\",sort:\"Organizar\",sortTitle:\"Organizar os filhos deste \",string:\"Texto\",type:\"Tipo\",typeTitle:\"Mudar o tipo deste campo\",openUrl:\"Ctrl+Click ou Ctrl+Enter para abrir link em nova janela\",undo:\"Desfazer último ação (Ctrl+Z)\",validationCannotMove:\"Não pode mover um campo como filho dele mesmo\",autoType:'Campo do tipo \"auto\". O tipo do campo é determinao automaticamente a partir do seu valor e pode ser texto, número, verdade/falso ou nulo.',objectType:'Campo do tipo \"objeto\". Um objeto contém uma lista de pares com chave e valor.',arrayType:'Campo do tipo \"lista\". Uma lista contem uma coleção de valores ordenados.',stringType:'Campo do tipo \"string\". Campo do tipo nao é determinado através do seu valor, mas sempre retornara um texto.'}},s=navigator.language||navigator.userLanguage;i=r.find(function(e){return e===s}),i||(i=\"en\"),e.exports={_locales:r,_defs:o,_lang:i,setLanguage:function(e){if(e){var t=r.find(function(t){return t===e});t?i=t:console.error(\"Language not found\")}},setLanguages:function(e){if(e)for(var t in e){var n=r.find(function(e){return e===t});n||r.push(t),o[t]=Object.assign({},o.en,o[t],e[t])}},translate:function(e,t,n){n||(n=i);var r=o[n][e];if(t)for(e in t)r=r.replace(\"${\"+e+\"}\",t[e]);return r||e}}},\"+ZMJ\":function(e,t,n){var i=n(\"lOnJ\");e.exports=function(e,t,n){if(i(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}}},\"/CAh\":function(e,t,n){\"use strict\";var i=e.exports=function(){this._cache={}};i.prototype.put=function(e,t){this._cache[e]=t},i.prototype.get=function(e){return this._cache[e]},i.prototype.del=function(e){delete this._cache[e]},i.prototype.clear=function(){this._cache={}}},\"/CDJ\":function(e,t,n){\"use strict\";function i(){return{enumerable:!0,configurable:!1,writable:!1}}n.d(t,\"a\",function(){return r}),n.d(t,\"b\",function(){return o}),n.d(t,\"c\",function(){return s}),n.d(t,\"e\",function(){return a}),n.d(t,\"f\",function(){return l}),t.d=i,\"function\"!=typeof Object.assign&&(Object.assign=function(e,t){if(null==e)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(e),i=1;i<arguments.length;i++){var r=arguments[i];if(null!=r)for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(n[o]=r[o])}return n}),Object.is||(Object.is=function(e,t){return e===t?0!==e||1/e==1/t:e!==e&&t!==t});var r=Object.assign,o=(Object.getOwnPropertyNames,Object.keys),s=Object.defineProperties,a=Object.defineProperty,l=(Object.freeze,Object.getOwnPropertyDescriptor,Object.getOwnPropertySymbols,Object.getPrototypeOf,Object.create);Object.isFrozen,Object.is},\"/gqF\":function(e,t,n){\"use strict\";t.a={props:{name:{type:String},id:{type:String},disabled:{type:Boolean},required:{type:Boolean,default:!1}}}},\"/ocq\":function(e,t,n){\"use strict\";function i(e,t){}function r(e){return Object.prototype.toString.call(e).indexOf(\"Error\")>-1}function o(e,t){switch(typeof t){case\"undefined\":return;case\"object\":return t;case\"function\":return t(e);case\"boolean\":return t?e.params:void 0}}function s(e,t){for(var n in t)e[n]=t[n];return e}function a(e,t,n){void 0===t&&(t={});var i,r=n||l;try{i=r(e||\"\")}catch(e){i={}}for(var o in t)i[o]=t[o];return i}function l(e){var t={};return(e=e.trim().replace(/^(\\?|#|&)/,\"\"))?(e.split(\"&\").forEach(function(e){var n=e.replace(/\\+/g,\" \").split(\"=\"),i=Ne(n.shift()),r=n.length>0?Ne(n.join(\"=\")):null;void 0===t[i]?t[i]=r:Array.isArray(t[i])?t[i].push(r):t[i]=[t[i],r]}),t):t}function c(e){var t=e?Object.keys(e).map(function(t){var n=e[t];if(void 0===n)return\"\";if(null===n)return je(t);if(Array.isArray(n)){var i=[];return n.forEach(function(e){void 0!==e&&(null===e?i.push(je(t)):i.push(je(t)+\"=\"+je(e)))}),i.join(\"&\")}return je(t)+\"=\"+je(n)}).filter(function(e){return e.length>0}).join(\"&\"):null;return t?\"?\"+t:\"\"}function u(e,t,n,i){var r=i&&i.options.stringifyQuery,o=t.query||{};try{o=h(o)}catch(e){}var s={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||\"/\",hash:t.hash||\"\",query:o,params:t.params||{},fullPath:f(t,r),matched:e?d(e):[]};return n&&(s.redirectedFrom=f(n,r)),Object.freeze(s)}function h(e){if(Array.isArray(e))return e.map(h);if(e&&\"object\"==typeof e){var t={};for(var n in e)t[n]=h(e[n]);return t}return e}function d(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function f(e,t){var n=e.path,i=e.query;void 0===i&&(i={});var r=e.hash;void 0===r&&(r=\"\");var o=t||c;return(n||\"/\")+o(i)+r}function p(e,t){return t===Ve?e===t:!!t&&(e.path&&t.path?e.path.replace(He,\"\")===t.path.replace(He,\"\")&&e.hash===t.hash&&m(e.query,t.query):!(!e.name||!t.name)&&(e.name===t.name&&e.hash===t.hash&&m(e.query,t.query)&&m(e.params,t.params)))}function m(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e),i=Object.keys(t);return n.length===i.length&&n.every(function(n){var i=e[n],r=t[n];return\"object\"==typeof i&&\"object\"==typeof r?m(i,r):String(i)===String(r)})}function g(e,t){return 0===e.path.replace(He,\"/\").indexOf(t.path.replace(He,\"/\"))&&(!t.hash||e.hash===t.hash)&&v(e.query,t.query)}function v(e,t){for(var n in t)if(!(n in e))return!1;return!0}function y(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||e.defaultPrevented||void 0!==e.button&&0!==e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){if(/\\b_blank\\b/i.test(e.currentTarget.getAttribute(\"target\")))return}return e.preventDefault&&e.preventDefault(),!0}}function b(e){if(e)for(var t,n=0;n<e.length;n++){if(t=e[n],\"a\"===t.tag)return t;if(t.children&&(t=b(t.children)))return t}}function w(e){if(!w.installed||Oe!==e){w.installed=!0,Oe=e;var t=function(e){return void 0!==e},n=function(e,n){var i=e.$options._parentVnode;t(i)&&t(i=i.data)&&t(i=i.registerRouteInstance)&&i(e,n)};e.mixin({beforeCreate:function(){t(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,\"_route\",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,n(this,this)},destroyed:function(){n(this)}}),Object.defineProperty(e.prototype,\"$router\",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,\"$route\",{get:function(){return this._routerRoot._route}}),e.component(\"router-view\",Re),e.component(\"router-link\",Ue);var i=e.config.optionMergeStrategies;i.beforeRouteEnter=i.beforeRouteLeave=i.beforeRouteUpdate=i.created}}function C(e,t,n){var i=e.charAt(0);if(\"/\"===i)return e;if(\"?\"===i||\"#\"===i)return t+e;var r=t.split(\"/\");n&&r[r.length-1]||r.pop();for(var o=e.replace(/^\\//,\"\").split(\"/\"),s=0;s<o.length;s++){var a=o[s];\"..\"===a?r.pop():\".\"!==a&&r.push(a)}return\"\"!==r[0]&&r.unshift(\"\"),r.join(\"/\")}function A(e){var t=\"\",n=\"\",i=e.indexOf(\"#\");i>=0&&(t=e.slice(i),e=e.slice(0,i));var r=e.indexOf(\"?\");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{path:e,query:n,hash:t}}function E(e){return e.replace(/\\/\\//g,\"/\")}function x(e,t){for(var n,i=[],r=0,o=0,s=\"\",a=t&&t.delimiter||\"/\";null!=(n=Ze.exec(e));){var l=n[0],c=n[1],u=n.index;if(s+=e.slice(o,u),o=u+l.length,c)s+=c[1];else{var h=e[o],d=n[2],f=n[3],p=n[4],m=n[5],g=n[6],v=n[7];s&&(i.push(s),s=\"\");var y=null!=d&&null!=h&&h!==d,b=\"+\"===g||\"*\"===g,w=\"?\"===g||\"*\"===g,C=n[2]||a,A=p||m;i.push({name:f||r++,prefix:d||\"\",delimiter:C,optional:w,repeat:b,partial:y,asterisk:!!v,pattern:A?B(A):v?\".*\":\"[^\"+_(C)+\"]+?\"})}}return o<e.length&&(s+=e.substr(o)),s&&i.push(s),i}function F(e,t){return k(x(e,t))}function S(e){return encodeURI(e).replace(/[\\/?#]/g,function(e){return\"%\"+e.charCodeAt(0).toString(16).toUpperCase()})}function $(e){return encodeURI(e).replace(/[?#]/g,function(e){return\"%\"+e.charCodeAt(0).toString(16).toUpperCase()})}function k(e){for(var t=new Array(e.length),n=0;n<e.length;n++)\"object\"==typeof e[n]&&(t[n]=new RegExp(\"^(?:\"+e[n].pattern+\")$\"));return function(n,i){for(var r=\"\",o=n||{},s=i||{},a=s.pretty?S:encodeURIComponent,l=0;l<e.length;l++){var c=e[l];if(\"string\"!=typeof c){var u,h=o[c.name];if(null==h){if(c.optional){c.partial&&(r+=c.prefix);continue}throw new TypeError('Expected \"'+c.name+'\" to be defined')}if(qe(h)){if(!c.repeat)throw new TypeError('Expected \"'+c.name+'\" to not repeat, but received `'+JSON.stringify(h)+\"`\");if(0===h.length){if(c.optional)continue;throw new TypeError('Expected \"'+c.name+'\" to not be empty')}for(var d=0;d<h.length;d++){if(u=a(h[d]),!t[l].test(u))throw new TypeError('Expected all \"'+c.name+'\" to match \"'+c.pattern+'\", but received `'+JSON.stringify(u)+\"`\");r+=(0===d?c.prefix:c.delimiter)+u}}else{if(u=c.asterisk?$(h):a(h),!t[l].test(u))throw new TypeError('Expected \"'+c.name+'\" to match \"'+c.pattern+'\", but received \"'+u+'\"');r+=c.prefix+u}}else r+=c}return r}}function _(e){return e.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g,\"\\\\$1\")}function B(e){return e.replace(/([=!:$\\/()])/g,\"\\\\$1\")}function D(e,t){return e.keys=t,e}function T(e){return e.sensitive?\"\":\"i\"}function L(e,t){var n=e.source.match(/\\((?!\\?)/g);if(n)for(var i=0;i<n.length;i++)t.push({name:i,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return D(e,t)}function O(e,t,n){for(var i=[],r=0;r<e.length;r++)i.push(M(e[r],t,n).source);return D(new RegExp(\"(?:\"+i.join(\"|\")+\")\",T(n)),t)}function R(e,t,n){return P(x(e,n),t,n)}function P(e,t,n){qe(t)||(n=t||n,t=[]),n=n||{};for(var i=n.strict,r=!1!==n.end,o=\"\",s=0;s<e.length;s++){var a=e[s];if(\"string\"==typeof a)o+=_(a);else{var l=_(a.prefix),c=\"(?:\"+a.pattern+\")\";t.push(a),a.repeat&&(c+=\"(?:\"+l+c+\")*\"),c=a.optional?a.partial?l+\"(\"+c+\")?\":\"(?:\"+l+\"(\"+c+\"))?\":l+\"(\"+c+\")\",o+=c}}var u=_(n.delimiter||\"/\"),h=o.slice(-u.length)===u;return i||(o=(h?o.slice(0,-u.length):o)+\"(?:\"+u+\"(?=$))?\"),o+=r?\"$\":i&&h?\"\":\"(?=\"+u+\"|$)\",D(new RegExp(\"^\"+o,T(n)),t)}function M(e,t,n){return qe(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?L(e,t):qe(e)?O(e,t,n):R(e,t,n)}function I(e,t,n){try{return(et[e]||(et[e]=Ge.compile(e)))(t||{},{pretty:!0})}catch(e){return\"\"}}function j(e,t,n,i){var r=t||[],o=n||Object.create(null),s=i||Object.create(null);e.forEach(function(e){N(r,o,s,e)});for(var a=0,l=r.length;a<l;a++)\"*\"===r[a]&&(r.push(r.splice(a,1)[0]),l--,a--);return{pathList:r,pathMap:o,nameMap:s}}function N(e,t,n,i,r,o){var s=i.path,a=i.name,l=i.pathToRegexpOptions||{},c=V(s,r,l.strict);\"boolean\"==typeof i.caseSensitive&&(l.sensitive=i.caseSensitive);var u={path:c,regex:H(c,l),components:i.components||{default:i.component},instances:{},name:a,parent:r,matchAs:o,redirect:i.redirect,beforeEnter:i.beforeEnter,meta:i.meta||{},props:null==i.props?{}:i.components?i.props:{default:i.props}};if(i.children&&i.children.forEach(function(i){var r=o?E(o+\"/\"+i.path):void 0;N(e,t,n,i,u,r)}),void 0!==i.alias){(Array.isArray(i.alias)?i.alias:[i.alias]).forEach(function(o){var s={path:o,children:i.children};N(e,t,n,s,r,u.path||\"/\")})}t[u.path]||(e.push(u.path),t[u.path]=u),a&&(n[a]||(n[a]=u))}function H(e,t){var n=Ge(e,[],t);return n}function V(e,t,n){return n||(e=e.replace(/\\/$/,\"\")),\"/\"===e[0]?e:null==t?e:E(t.path+\"/\"+e)}function W(e,t,n,i){var r=\"string\"==typeof e?{path:e}:e;if(r.name||r._normalized)return r;if(!r.path&&r.params&&t){r=z({},r),r._normalized=!0;var o=z(z({},t.params),r.params);if(t.name)r.name=t.name,r.params=o;else if(t.matched.length){var s=t.matched[t.matched.length-1].path;r.path=I(s,o,\"path \"+t.path)}return r}var l=A(r.path||\"\"),c=t&&t.path||\"/\",u=l.path?C(l.path,c,n||r.append):c,h=a(l.query,r.query,i&&i.options.parseQuery),d=r.hash||l.hash;return d&&\"#\"!==d.charAt(0)&&(d=\"#\"+d),{_normalized:!0,path:u,query:h,hash:d}}function z(e,t){for(var n in t)e[n]=t[n];return e}function U(e,t){function n(e){j(e,l,c,h)}function i(e,n,i){var r=W(e,n,!1,t),o=r.name;if(o){var a=h[o];if(!a)return s(null,r);var u=a.regex.keys.filter(function(e){return!e.optional}).map(function(e){return e.name});if(\"object\"!=typeof r.params&&(r.params={}),n&&\"object\"==typeof n.params)for(var d in n.params)!(d in r.params)&&u.indexOf(d)>-1&&(r.params[d]=n.params[d]);if(a)return r.path=I(a.path,r.params,'named route \"'+o+'\"'),s(a,r,i)}else if(r.path){r.params={};for(var f=0;f<l.length;f++){var p=l[f],m=c[p];if(K(m.regex,r.path,r.params))return s(m,r,i)}}return s(null,r)}function r(e,n){var r=e.redirect,o=\"function\"==typeof r?r(u(e,n,null,t)):r;if(\"string\"==typeof o&&(o={path:o}),!o||\"object\"!=typeof o)return s(null,n);var a=o,l=a.name,c=a.path,d=n.query,f=n.hash,p=n.params;if(d=a.hasOwnProperty(\"query\")?a.query:d,f=a.hasOwnProperty(\"hash\")?a.hash:f,p=a.hasOwnProperty(\"params\")?a.params:p,l){h[l];return i({_normalized:!0,name:l,query:d,hash:f,params:p},void 0,n)}if(c){var m=q(c,e);return i({_normalized:!0,path:I(m,p,'redirect route with path \"'+m+'\"'),query:d,hash:f},void 0,n)}return s(null,n)}function o(e,t,n){var r=I(n,t.params,'aliased route with path \"'+n+'\"'),o=i({_normalized:!0,path:r});if(o){var a=o.matched,l=a[a.length-1];return t.params=o.params,s(l,t)}return s(null,t)}function s(e,n,i){return e&&e.redirect?r(e,i||n):e&&e.matchAs?o(e,n,e.matchAs):u(e,n,i,t)}var a=j(e),l=a.pathList,c=a.pathMap,h=a.nameMap;return{match:i,addRoutes:n}}function K(e,t,n){var i=t.match(e);if(!i)return!1;if(!n)return!0;for(var r=1,o=i.length;r<o;++r){var s=e.keys[r-1],a=\"string\"==typeof i[r]?decodeURIComponent(i[r]):i[r];s&&(n[s.name]=a)}return!0}function q(e,t){return C(e,t.parent?t.parent.path:\"/\",!0)}function G(){window.history.replaceState({key:oe()},\"\"),window.addEventListener(\"popstate\",function(e){Q(),e.state&&e.state.key&&se(e.state.key)})}function J(e,t,n,i){if(e.app){var r=e.options.scrollBehavior;r&&e.app.$nextTick(function(){var e=Y(),o=r(t,n,i?e:null);o&&(\"function\"==typeof o.then?o.then(function(t){ie(t,e)}).catch(function(e){}):ie(o,e))})}}function Q(){var e=oe();e&&(tt[e]={x:window.pageXOffset,y:window.pageYOffset})}function Y(){var e=oe();if(e)return tt[e]}function X(e,t){var n=document.documentElement,i=n.getBoundingClientRect(),r=e.getBoundingClientRect();return{x:r.left-i.left-t.x,y:r.top-i.top-t.y}}function Z(e){return ne(e.x)||ne(e.y)}function ee(e){return{x:ne(e.x)?e.x:window.pageXOffset,y:ne(e.y)?e.y:window.pageYOffset}}function te(e){return{x:ne(e.x)?e.x:0,y:ne(e.y)?e.y:0}}function ne(e){return\"number\"==typeof e}function ie(e,t){var n=\"object\"==typeof e;if(n&&\"string\"==typeof e.selector){var i=document.querySelector(e.selector);if(i){var r=e.offset&&\"object\"==typeof e.offset?e.offset:{};r=te(r),t=X(i,r)}else Z(e)&&(t=ee(e))}else n&&Z(e)&&(t=ee(e));t&&window.scrollTo(t.x,t.y)}function re(){return it.now().toFixed(3)}function oe(){return rt}function se(e){rt=e}function ae(e,t){Q();var n=window.history;try{t?n.replaceState({key:rt},\"\",e):(rt=re(),n.pushState({key:rt},\"\",e))}catch(n){window.location[t?\"replace\":\"assign\"](e)}}function le(e){ae(e,!0)}function ce(e,t,n){var i=function(r){r>=e.length?n():e[r]?t(e[r],function(){i(r+1)}):i(r+1)};i(0)}function ue(e){return function(t,n,i){var o=!1,s=0,a=null;he(e,function(e,t,n,l){if(\"function\"==typeof e&&void 0===e.cid){o=!0,s++;var c,u=pe(function(t){fe(t)&&(t=t.default),e.resolved=\"function\"==typeof t?t:Oe.extend(t),n.components[l]=t,--s<=0&&i()}),h=pe(function(e){var t=\"Failed to resolve async component \"+l+\": \"+e;a||(a=r(e)?e:new Error(t),i(a))});try{c=e(u,h)}catch(e){h(e)}if(c)if(\"function\"==typeof c.then)c.then(u,h);else{var d=c.component;d&&\"function\"==typeof d.then&&d.then(u,h)}}}),o||i()}}function he(e,t){return de(e.map(function(e){return Object.keys(e.components).map(function(n){return t(e.components[n],e.instances[n],e,n)})}))}function de(e){return Array.prototype.concat.apply([],e)}function fe(e){return e.__esModule||ot&&\"Module\"===e[Symbol.toStringTag]}function pe(e){var t=!1;return function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(!t)return t=!0,e.apply(this,n)}}function me(e){if(!e)if(Ke){var t=document.querySelector(\"base\");e=t&&t.getAttribute(\"href\")||\"/\",e=e.replace(/^https?:\\/\\/[^\\/]+/,\"\")}else e=\"/\";return\"/\"!==e.charAt(0)&&(e=\"/\"+e),e.replace(/\\/$/,\"\")}function ge(e,t){var n,i=Math.max(e.length,t.length);for(n=0;n<i&&e[n]===t[n];n++);return{updated:t.slice(0,n),activated:t.slice(n),deactivated:e.slice(n)}}function ve(e,t,n,i){var r=he(e,function(e,i,r,o){var s=ye(e,t);if(s)return Array.isArray(s)?s.map(function(e){return n(e,i,r,o)}):n(s,i,r,o)});return de(i?r.reverse():r)}function ye(e,t){return\"function\"!=typeof e&&(e=Oe.extend(e)),e.options[t]}function be(e){return ve(e,\"beforeRouteLeave\",Ce,!0)}function we(e){return ve(e,\"beforeRouteUpdate\",Ce)}function Ce(e,t){if(t)return function(){return e.apply(t,arguments)}}function Ae(e,t,n){return ve(e,\"beforeRouteEnter\",function(e,i,r,o){return Ee(e,r,o,t,n)})}function Ee(e,t,n,i,r){return function(o,s,a){return e(o,s,function(e){a(e),\"function\"==typeof e&&i.push(function(){xe(e,t.instances,n,r)})})}}function xe(e,t,n,i){t[n]?e(t[n]):i()&&setTimeout(function(){xe(e,t,n,i)},16)}function Fe(e){var t=window.location.pathname;return e&&0===t.indexOf(e)&&(t=t.slice(e.length)),(t||\"/\")+window.location.search+window.location.hash}function Se(e){var t=Fe(e);if(!/^\\/#/.test(t))return window.location.replace(E(e+\"/#\"+t)),!0}function $e(){var e=ke();return\"/\"===e.charAt(0)||(De(\"/\"+e),!1)}function ke(){var e=window.location.href,t=e.indexOf(\"#\");return-1===t?\"\":e.slice(t+1)}function _e(e){var t=window.location.href,n=t.indexOf(\"#\");return(n>=0?t.slice(0,n):t)+\"#\"+e}function Be(e){nt?ae(_e(e)):window.location.hash=e}function De(e){nt?le(_e(e)):window.location.replace(_e(e))}function Te(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function Le(e,t,n){var i=\"hash\"===n?\"#\"+t:t;return e?E(e+\"/\"+i):i}var Oe,Re={name:\"router-view\",functional:!0,props:{name:{type:String,default:\"default\"}},render:function(e,t){var n=t.props,i=t.children,r=t.parent,a=t.data;a.routerView=!0;for(var l=r.$createElement,c=n.name,u=r.$route,h=r._routerViewCache||(r._routerViewCache={}),d=0,f=!1;r&&r._routerRoot!==r;)r.$vnode&&r.$vnode.data.routerView&&d++,r._inactive&&(f=!0),r=r.$parent;if(a.routerViewDepth=d,f)return l(h[c],a,i);var p=u.matched[d];if(!p)return h[c]=null,l();var m=h[c]=p.components[c];a.registerRouteInstance=function(e,t){var n=p.instances[c];(t&&n!==e||!t&&n===e)&&(p.instances[c]=t)},(a.hook||(a.hook={})).prepatch=function(e,t){p.instances[c]=t.componentInstance};var g=a.props=o(u,p.props&&p.props[c]);if(g){g=a.props=s({},g);var v=a.attrs=a.attrs||{};for(var y in g)m.props&&y in m.props||(v[y]=g[y],delete g[y])}return l(m,a,i)}},Pe=/[!'()*]/g,Me=function(e){return\"%\"+e.charCodeAt(0).toString(16)},Ie=/%2C/g,je=function(e){return encodeURIComponent(e).replace(Pe,Me).replace(Ie,\",\")},Ne=decodeURIComponent,He=/\\/?$/,Ve=u(null,{path:\"/\"}),We=[String,Object],ze=[String,Array],Ue={name:\"router-link\",props:{to:{type:We,required:!0},tag:{type:String,default:\"a\"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:ze,default:\"click\"}},render:function(e){var t=this,n=this.$router,i=this.$route,r=n.resolve(this.to,i,this.append),o=r.location,s=r.route,a=r.href,l={},c=n.options.linkActiveClass,h=n.options.linkExactActiveClass,d=null==c?\"router-link-active\":c,f=null==h?\"router-link-exact-active\":h,m=null==this.activeClass?d:this.activeClass,v=null==this.exactActiveClass?f:this.exactActiveClass,w=o.path?u(null,o,null,n):s;l[v]=p(i,w),l[m]=this.exact?l[v]:g(i,w);var C=function(e){y(e)&&(t.replace?n.replace(o):n.push(o))},A={click:y};Array.isArray(this.event)?this.event.forEach(function(e){A[e]=C}):A[this.event]=C;var E={class:l};if(\"a\"===this.tag)E.on=A,E.attrs={href:a};else{var x=b(this.$slots.default);if(x){x.isStatic=!1;var F=Oe.util.extend;(x.data=F({},x.data)).on=A;(x.data.attrs=F({},x.data.attrs)).href=a}else E.on=A}return e(this.tag,E,this.$slots.default)}},Ke=\"undefined\"!=typeof window,qe=Array.isArray||function(e){return\"[object Array]\"==Object.prototype.toString.call(e)},Ge=M,Je=x,Qe=F,Ye=k,Xe=P,Ze=new RegExp([\"(\\\\\\\\.)\",\"([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))\"].join(\"|\"),\"g\");Ge.parse=Je,Ge.compile=Qe,Ge.tokensToFunction=Ye,Ge.tokensToRegExp=Xe;var et=Object.create(null),tt=Object.create(null),nt=Ke&&function(){var e=window.navigator.userAgent;return(-1===e.indexOf(\"Android 2.\")&&-1===e.indexOf(\"Android 4.0\")||-1===e.indexOf(\"Mobile Safari\")||-1!==e.indexOf(\"Chrome\")||-1!==e.indexOf(\"Windows Phone\"))&&(window.history&&\"pushState\"in window.history)}(),it=Ke&&window.performance&&window.performance.now?window.performance:Date,rt=re(),ot=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag,st=function(e,t){this.router=e,this.base=me(t),this.current=Ve,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};st.prototype.listen=function(e){this.cb=e},st.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},st.prototype.onError=function(e){this.errorCbs.push(e)},st.prototype.transitionTo=function(e,t,n){var i=this,r=this.router.match(e,this.current);this.confirmTransition(r,function(){i.updateRoute(r),t&&t(r),i.ensureURL(),i.ready||(i.ready=!0,i.readyCbs.forEach(function(e){e(r)}))},function(e){n&&n(e),e&&!i.ready&&(i.ready=!0,i.readyErrorCbs.forEach(function(t){t(e)}))})},st.prototype.confirmTransition=function(e,t,n){var o=this,s=this.current,a=function(e){r(e)&&(o.errorCbs.length?o.errorCbs.forEach(function(t){t(e)}):(i(!1,\"uncaught error during route navigation:\"),console.error(e))),n&&n(e)};if(p(e,s)&&e.matched.length===s.matched.length)return this.ensureURL(),a();var l=ge(this.current.matched,e.matched),c=l.updated,u=l.deactivated,h=l.activated,d=[].concat(be(u),this.router.beforeHooks,we(c),h.map(function(e){return e.beforeEnter}),ue(h));this.pending=e;var f=function(t,n){if(o.pending!==e)return a();try{t(e,s,function(e){!1===e||r(e)?(o.ensureURL(!0),a(e)):\"string\"==typeof e||\"object\"==typeof e&&(\"string\"==typeof e.path||\"string\"==typeof e.name)?(a(),\"object\"==typeof e&&e.replace?o.replace(e):o.push(e)):n(e)})}catch(e){a(e)}};ce(d,f,function(){var n=[];ce(Ae(h,n,function(){return o.current===e}).concat(o.router.resolveHooks),f,function(){if(o.pending!==e)return a();o.pending=null,t(e),o.router.app&&o.router.app.$nextTick(function(){n.forEach(function(e){e()})})})})},st.prototype.updateRoute=function(e){var t=this.current;this.current=e,this.cb&&this.cb(e),this.router.afterHooks.forEach(function(n){n&&n(e,t)})};var at=function(e){function t(t,n){var i=this;e.call(this,t,n);var r=t.options.scrollBehavior;r&&G();var o=Fe(this.base);window.addEventListener(\"popstate\",function(e){var n=i.current,s=Fe(i.base);i.current===Ve&&s===o||i.transitionTo(s,function(e){r&&J(t,e,n,!0)})})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var i=this,r=this,o=r.current;this.transitionTo(e,function(e){ae(E(i.base+e.fullPath)),J(i.router,e,o,!1),t&&t(e)},n)},t.prototype.replace=function(e,t,n){var i=this,r=this,o=r.current;this.transitionTo(e,function(e){le(E(i.base+e.fullPath)),J(i.router,e,o,!1),t&&t(e)},n)},t.prototype.ensureURL=function(e){if(Fe(this.base)!==this.current.fullPath){var t=E(this.base+this.current.fullPath);e?ae(t):le(t)}},t.prototype.getCurrentLocation=function(){return Fe(this.base)},t}(st),lt=function(e){function t(t,n,i){e.call(this,t,n),i&&Se(this.base)||$e()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this,t=this.router,n=t.options.scrollBehavior,i=nt&&n;i&&G(),window.addEventListener(nt?\"popstate\":\"hashchange\",function(){var t=e.current;$e()&&e.transitionTo(ke(),function(n){i&&J(e.router,n,t,!0),nt||De(n.fullPath)})})},t.prototype.push=function(e,t,n){var i=this,r=this,o=r.current;this.transitionTo(e,function(e){Be(e.fullPath),J(i.router,e,o,!1),t&&t(e)},n)},t.prototype.replace=function(e,t,n){var i=this,r=this,o=r.current;this.transitionTo(e,function(e){De(e.fullPath),J(i.router,e,o,!1),t&&t(e)},n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;ke()!==t&&(e?Be(t):De(t))},t.prototype.getCurrentLocation=function(){return ke()},t}(st),ct=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var i=this;this.transitionTo(e,function(e){i.stack=i.stack.slice(0,i.index+1).concat(e),i.index++,t&&t(e)},n)},t.prototype.replace=function(e,t,n){var i=this;this.transitionTo(e,function(e){i.stack=i.stack.slice(0,i.index).concat(e),t&&t(e)},n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var i=this.stack[n];this.confirmTransition(i,function(){t.index=n,t.updateRoute(i)})}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:\"/\"},t.prototype.ensureURL=function(){},t}(st),ut=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=U(e.routes||[],this);var t=e.mode||\"hash\";switch(this.fallback=\"history\"===t&&!nt&&!1!==e.fallback,this.fallback&&(t=\"hash\"),Ke||(t=\"abstract\"),this.mode=t,t){case\"history\":this.history=new at(this,e.base);break;case\"hash\":this.history=new lt(this,e.base,this.fallback);break;case\"abstract\":this.history=new ct(this,e.base)}},ht={currentRoute:{configurable:!0}};ut.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},ht.currentRoute.get=function(){return this.history&&this.history.current},ut.prototype.init=function(e){var t=this;if(this.apps.push(e),!this.app){this.app=e;var n=this.history;if(n instanceof at)n.transitionTo(n.getCurrentLocation());else if(n instanceof lt){var i=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),i,i)}n.listen(function(e){t.apps.forEach(function(t){t._route=e})})}},ut.prototype.beforeEach=function(e){return Te(this.beforeHooks,e)},ut.prototype.beforeResolve=function(e){return Te(this.resolveHooks,e)},ut.prototype.afterEach=function(e){return Te(this.afterHooks,e)},ut.prototype.onReady=function(e,t){this.history.onReady(e,t)},ut.prototype.onError=function(e){this.history.onError(e)},ut.prototype.push=function(e,t,n){this.history.push(e,t,n)},ut.prototype.replace=function(e,t,n){this.history.replace(e,t,n)},ut.prototype.go=function(e){this.history.go(e)},ut.prototype.back=function(){this.go(-1)},ut.prototype.forward=function(){this.go(1)},ut.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map(function(e){return Object.keys(e.components).map(function(t){return e.components[t]})})):[]},ut.prototype.resolve=function(e,t,n){var i=W(e,t||this.history.current,n,this),r=this.match(i,t),o=r.redirectedFrom||r.fullPath;return{location:i,route:r,href:Le(this.history.base,o,this.mode),normalizedTo:i,resolved:r}},ut.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==Ve&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(ut.prototype,ht),ut.install=w,ut.version=\"3.0.1\",Ke&&window.Vue&&window.Vue.use(ut),t.a=ut},\"/sUu\":function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"2PZM\"),o=n(\"7+8w\"),s=n(\"ab1q\"),a=n(\"m9Yj\"),l=n(\"il3A\"),c=n(\"/CDJ\"),u=n(\"Ch1r\"),h=n(\"Z09Z\"),d=n(\"2I3h\"),f=n(\"X/jh\"),p=n(\"WF/B\"),m=n.i(a.a)(p.b,o.a.bind(null,\"img\"));m.imgSrc.required=!1;var g=n.i(c.a)({},h.b,d.b,f.b,m,n.i(a.a)(u.a.props),{align:{type:String,default:null},noBody:{type:Boolean,default:!1}});t.a={functional:!0,props:g,render:function(e,t){var o,a=t.props,c=t.data,u=t.slots,g=[],v=u(),y=a.imgSrc?e(p.a,{props:n.i(l.a)(m,a,s.a.bind(null,\"img\"))}):null;return y&&(!a.imgTop&&a.imgBottom||g.push(y)),(a.header||v.header)&&g.push(e(d.a,{props:n.i(l.a)(d.b,a)},v.header)),a.noBody?g.push(v.default):g.push(e(h.a,{props:n.i(l.a)(h.b,a)},v.default)),(a.footer||v.footer)&&g.push(e(f.a,{props:n.i(l.a)(f.b,a)},v.footer)),y&&a.imgBottom&&g.push(y),e(a.tag,n.i(r.a)(c,{staticClass:\"card\",class:(o={},i(o,\"text-\"+a.align,Boolean(a.align)),i(o,\"bg-\"+a.bgVariant,Boolean(a.bgVariant)),i(o,\"border-\"+a.borderVariant,Boolean(a.borderVariant)),i(o,\"text-\"+a.textVariant,Boolean(a.textVariant)),o)}),g)}}},\"04Eq\":function(e,t,n){\"use strict\";function i(e,t,n,s,a,l,c,u,h){if(n&&\"object\"==typeof n&&!Array.isArray(n)){t(n,s,a,l,c,u,h);for(var d in n){var f=n[d];if(Array.isArray(f)){if(d in o.arrayKeywords)for(var p=0;p<f.length;p++)i(e,t,f[p],s+\"/\"+d+\"/\"+p,a,s,d,n,p)}else if(d in o.propsKeywords){if(f&&\"object\"==typeof f)for(var m in f)i(e,t,f[m],s+\"/\"+d+\"/\"+r(m),a,s,d,n,m)}else(d in o.keywords||e.allKeys&&!(d in o.skipKeywords))&&i(e,t,f,s+\"/\"+d,a,s,d,n)}}}function r(e){return e.replace(/~/g,\"~0\").replace(/\\//g,\"~1\")}var o=e.exports=function(e,t,n){\"function\"==typeof t&&(n=t,t={}),i(t,n,e,\"\",e)};o.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0},o.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},o.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},o.skipKeywords={enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0}},\"0Gqu\":function(e,t,n){\"use strict\";var i=n(\"+FfA\"),r=n(\"q21c\"),o={bJumbotron:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},\"162o\":function(e,t,n){(function(e){function i(e,t){this._id=e,this._clearFn=t}var r=Function.prototype.apply;t.setTimeout=function(){return new i(r.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new i(r.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(\"mypn\"),t.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(t,n(\"DuR2\"))},\"1etr\":function(e,t,n){\"use strict\";var i=n(\"KXjV\"),r=n(\"q21c\"),o={bBadge:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},\"1kS7\":function(e,t){t.f=Object.getOwnPropertySymbols},\"1m3n\":function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r=n(\"GnGf\"),o=n(\"/CDJ\"),s=n(\"Teo5\"),a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},l={items:{type:Array,default:null}};t.a={functional:!0,props:l,render:function(e,t){var l=t.props,c=t.data,u=t.children,h=u;if(n.i(r.b)(l.items)){var d=!1;h=l.items.map(function(t,i){\"object\"!==(void 0===t?\"undefined\":a(t))&&(t={text:t});var r=t.active;return r&&(d=!0),r||d||(r=i+1===l.items.length),e(s.a,{props:n.i(o.a)({},t,{active:r})})})}return e(\"ol\",n.i(i.a)(c,{staticClass:\"breadcrumb\"}),h)}}},\"1nuA\":function(e,t,n){\"use strict\";t.decode=t.parse=n(\"kMPS\"),t.encode=t.stringify=n(\"xaZU\")},\"2I3h\":function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,\"b\",function(){return c});var r=n(\"2PZM\"),o=n(\"7+8w\"),s=n(\"m9Yj\"),a=n(\"/CDJ\"),l=n(\"Ch1r\"),c=n.i(a.a)({},n.i(s.a)(l.a.props,o.a.bind(null,\"header\")),{header:{type:String,default:null},headerClass:{type:[String,Object,Array],default:null}});t.a={functional:!0,props:c,render:function(e,t){var o,s=t.props,a=t.data,l=t.slots;return e(s.headerTag,n.i(r.a)(a,{staticClass:\"card-header\",class:[s.headerClass,(o={},i(o,\"bg-\"+s.headerBgVariant,Boolean(s.headerBgVariant)),i(o,\"border-\"+s.headerBorderVariant,Boolean(s.headerBorderVariant)),i(o,\"text-\"+s.headerTextVariant,Boolean(s.headerTextVariant)),o)]}),l().default||[e(\"div\",{domProps:{innerHTML:s.header}})])}}},\"2PZM\":function(e,t,n){\"use strict\";function i(){for(var e,t,n={},i=arguments.length;i--;)for(var o=0,s=Object.keys(arguments[i]);o<s.length;o++)switch(e=s[o]){case\"class\":case\"style\":case\"directives\":Array.isArray(n[e])||(n[e]=[]),n[e]=n[e].concat(arguments[i][e]);break;case\"staticClass\":if(!arguments[i][e])break;void 0===n[e]&&(n[e]=\"\"),n[e]&&(n[e]+=\" \"),n[e]+=arguments[i][e].trim();break;case\"on\":case\"nativeOn\":n[e]||(n[e]={});for(var a=0,l=Object.keys(arguments[i][e]||{});a<l.length;a++)t=l[a],n[e][t]?n[e][t]=[].concat(n[e][t],arguments[i][e][t]):n[e][t]=arguments[i][e][t];break;case\"attrs\":case\"props\":case\"domProps\":case\"scopedSlots\":case\"staticStyle\":case\"hook\":case\"transition\":n[e]||(n[e]={}),n[e]=r({},arguments[i][e],n[e]);break;case\"slot\":case\"key\":case\"ref\":case\"tag\":case\"show\":case\"keepAlive\":default:n[e]||(n[e]=arguments[i][e])}return n}n.d(t,\"a\",function(){return i});var r=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}},\"2Ysk\":function(e,t,n){\"use strict\";function i(e,t){var n=this;this.editor=e,this.timeout=void 0,this.delay=200,this.lastText=void 0,this.dom={},this.dom.container=t;var i=document.createElement(\"table\");this.dom.table=i,i.className=\"jsoneditor-search\",t.appendChild(i);var r=document.createElement(\"tbody\");this.dom.tbody=r,i.appendChild(r);var o=document.createElement(\"tr\");r.appendChild(o);var s=document.createElement(\"td\");o.appendChild(s);var a=document.createElement(\"div\");this.dom.results=a,a.className=\"jsoneditor-results\",s.appendChild(a),s=document.createElement(\"td\"),o.appendChild(s);var l=document.createElement(\"div\");this.dom.input=l,l.className=\"jsoneditor-frame\",l.title=\"Search fields and values\",s.appendChild(l);var c=document.createElement(\"table\");l.appendChild(c);var u=document.createElement(\"tbody\");c.appendChild(u),o=document.createElement(\"tr\"),u.appendChild(o);var h=document.createElement(\"button\");h.type=\"button\",h.className=\"jsoneditor-refresh\",s=document.createElement(\"td\"),s.appendChild(h),o.appendChild(s);var d=document.createElement(\"input\");this.dom.search=d,d.oninput=function(e){n._onDelayedSearch(e)},d.onchange=function(e){n._onSearch()},d.onkeydown=function(e){n._onKeyDown(e)},d.onkeyup=function(e){n._onKeyUp(e)},h.onclick=function(e){d.select()},s=document.createElement(\"td\"),s.appendChild(d),o.appendChild(s);var f=document.createElement(\"button\");f.type=\"button\",f.title=\"Next result (Enter)\",f.className=\"jsoneditor-next\",f.onclick=function(){n.next()},s=document.createElement(\"td\"),s.appendChild(f),o.appendChild(s);var p=document.createElement(\"button\");p.type=\"button\",p.title=\"Previous result (Shift+Enter)\",p.className=\"jsoneditor-previous\",p.onclick=function(){n.previous()},s=document.createElement(\"td\"),s.appendChild(p),o.appendChild(s)}i.prototype.next=function(e){if(void 0!=this.results){var t=void 0!=this.resultIndex?this.resultIndex+1:0;t>this.results.length-1&&(t=0),this._setActiveResult(t,e)}},i.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,n=void 0!=this.resultIndex?this.resultIndex-1:t;n<0&&(n=t),this._setActiveResult(n,e)}},i.prototype._setActiveResult=function(e,t){if(this.activeResult){var n=this.activeResult.node;\"field\"==this.activeResult.elem?delete n.searchFieldActive:delete n.searchValueActive,n.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var i=this.results[this.resultIndex].node,r=this.results[this.resultIndex].elem;\"field\"==r?i.searchFieldActive=!0:i.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],i.updateDom(),i.scrollTo(function(){t&&i.focus(r)})},i.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},i.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},i.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,n=t.length>0?t:void 0;if(n!=this.lastText||e)if(this.lastText=n,this.results=this.editor.search(n),this._setActiveResult(void 0),void 0!=n){var i=this.results.length;switch(i){case 0:this.dom.results.innerHTML=\"no&nbsp;results\";break;case 1:this.dom.results.innerHTML=\"1&nbsp;result\";break;default:this.dom.results.innerHTML=i+\"&nbsp;results\"}}else this.dom.results.innerHTML=\"\"},i.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value=\"\",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},i.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},i.prototype.clear=function(){this.dom.search.value=\"\",this._onSearch()},i.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},e.exports=i},\"3+B3\":function(e,t,n){\"use strict\";var i=n(\"OfYj\"),r=n(\"wen1\"),o=n(\"/gqF\"),s=n(\"60E9\"),a=n(\"TMTb\"),l=n(\"dfnb\"),c=n(\"GnGf\");t.a={mixins:[i.a,o.a,s.a,a.a,l.a,r.a],render:function(e){var t=this,i=t.$slots,r=t.formOptions.map(function(t,n){return e(\"option\",{key:\"option_\"+n+\"_opt\",attrs:{disabled:Boolean(t.disabled)},domProps:{innerHTML:t.text,value:t.value}})});return e(\"select\",{ref:\"input\",class:t.inputClass,directives:[{name:\"model\",rawName:\"v-model\",value:t.localValue,expression:\"localValue\"}],attrs:{id:t.safeId(),name:t.name,multiple:t.multiple||null,size:t.isMultiple?t.selectSize:null,disabled:t.disabled,required:t.required,\"aria-required\":t.required?\"true\":null,\"aria-invalid\":t.computedAriaInvalid},on:{change:function(e){var i=e.target,r=n.i(c.a)(i.options).filter(function(e){return e.selected}).map(function(e){return\"_value\"in e?e._value:e.value});t.localValue=i.multiple?r:r[0],t.$emit(\"change\",t.localValue)}}},[i.first,r,i.default])},data:function(){return{localValue:this.value}},watch:{value:function(e,t){this.localValue=e},localValue:function(e,t){this.$emit(\"input\",this.localValue)}},props:{value:{},multiple:{type:Boolean,default:!1},selectSize:{type:Number,default:0},ariaInvalid:{type:[Boolean,String],default:!1}},computed:{inputClass:function(){return[\"form-control\",this.stateClass,this.sizeFormClass,this.isPlain?null:\"custom-select\",this.isPlain||!this.size?null:\"custom-select-\"+this.size]},isPlain:function(){return this.plain||this.isMultiple},isMultiple:function(){return Boolean(this.multiple&&this.selectSize>1)},computedAriaInvalid:function(){return!0===this.ariaInvalid||\"true\"===this.ariaInvalid?\"true\":\"is-invalid\"===this.stateClass?\"true\":null}}}},\"33mL\":function(e,t,n){\"use strict\";var i=n(\"WnFU\"),r=n(\"ghhx\"),o=n(\"UgDT\"),s=n(\"yCm2\"),a=n(\"q21c\"),l={bContainer:i.a,bRow:r.a,bCol:o.a,bFormRow:s.a},c={install:function(e){n.i(a.c)(e,l)}};n.i(a.a)(c),t.a=c},\"34sA\":function(e,t,n){\"use strict\";function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var r=n(\"GnGf\"),o=\"__BV_root_listeners__\";t.a={methods:{listenOnRoot:function(e,t){return this[o]&&n.i(r.b)(this[o])||(this[o]=[]),this[o].push({event:e,callback:t}),this.$root.$on(e,t),this},emitOnRoot:function(e){for(var t,n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return(t=this.$root).$emit.apply(t,[e].concat(i(r))),this}},beforeDestroy:function(){if(this[o]&&n.i(r.b)(this[o]))for(;this[o].length>0;){var e=this[o].shift(),t=e.event,i=e.callback;this.$root.$off(t,i)}}}},\"3Eo+\":function(e,t){var n=0,i=Math.random();e.exports=function(e){return\"Symbol(\".concat(void 0===e?\"\":e,\")_\",(++n+i).toString(36))}},\"3IRH\":function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},\"3oid\":function(e,t,n){\"use strict\";var i=n(\"uM87\"),r=n(\"q21c\"),o={bButtonToolbar:i.a,bBtnToolbar:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},\"3pcS\":function(e,t,n){\"use strict\";e.exports=function(e,t,n){function i(e){for(var t=e.rules,n=0;n<t.length;n++)if(r(t[n]))return!0}function r(t){return void 0!==e.schema[t.keyword]||t.implements&&o(t)}function o(t){for(var n=t.implements,i=0;i<n.length;i++)if(void 0!==e.schema[n[i]])return!0}var s=\"\",a=!0===e.schema.$async,l=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,\"$ref\"),c=e.self._getId(e.schema);if(e.isTop){if(a){e.async=!0;var u=\"es7\"==e.opts.async;e.yieldAwait=u?\"await\":\"yield\"}s+=\" var validate = \",a?u?s+=\" (async function \":(\"*\"!=e.opts.async&&(s+=\"co.wrap\"),s+=\"(function* \"):s+=\" (function \",s+=\" (data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; \",c&&(e.opts.sourceCode||e.opts.processCode)&&(s+=\" /*# sourceURL=\"+c+\" */ \")}if(\"boolean\"==typeof e.schema||!l&&!e.schema.$ref){var h,d=e.level,f=e.dataLevel,p=e.schema[\"false schema\"],m=e.schemaPath+e.util.getProperty(\"false schema\"),g=e.errSchemaPath+\"/false schema\",v=!e.opts.allErrors,y=\"data\"+(f||\"\"),b=\"valid\"+d;if(!1===e.schema){e.isTop?v=!0:s+=\" var \"+b+\" = false; \";var w=w||[];w.push(s),s=\"\",!1!==e.createErrors?(s+=\" { keyword: '\"+(h||\"false schema\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(g)+\" , params: {} \",!1!==e.opts.messages&&(s+=\" , message: 'boolean schema is false' \"),e.opts.verbose&&(s+=\" , schema: false , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+y+\" \"),s+=\" } \"):s+=\" {} \";var C=s;s=w.pop(),!e.compositeRule&&v?e.async?s+=\" throw new ValidationError([\"+C+\"]); \":s+=\" validate.errors = [\"+C+\"]; return false; \":s+=\" var err = \"+C+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \"}else e.isTop?s+=a?\" return data; \":\" validate.errors = null; return true; \":s+=\" var \"+b+\" = true; \";return e.isTop&&(s+=\" }); return validate; \"),s}if(e.isTop){var A=e.isTop,d=e.level=0,f=e.dataLevel=0,y=\"data\";e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[void 0],s+=\" var vErrors = null; \",s+=\" var errors = 0;     \",s+=\" if (rootData === undefined) rootData = data; \"}else{var d=e.level,f=e.dataLevel,y=\"data\"+(f||\"\");if(c&&(e.baseId=e.resolve.url(e.baseId,c)),a&&!e.async)throw new Error(\"async schema in sync schema\");s+=\" var errs_\"+d+\" = errors;\"}var h,b=\"valid\"+d,v=!e.opts.allErrors,E=\"\",x=\"\",F=e.schema.type,S=Array.isArray(F);if(S&&1==F.length&&(F=F[0],S=!1),e.schema.$ref&&l){if(\"fail\"==e.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path \"'+e.errSchemaPath+'\" (see option extendRefs)');!0!==e.opts.extendRefs&&(l=!1,e.logger.warn('$ref: keywords ignored in schema at path \"'+e.errSchemaPath+'\"'))}if(F){if(e.opts.coerceTypes)var $=e.util.coerceToTypes(e.opts.coerceTypes,F);var k=e.RULES.types[F];if($||S||!0===k||k&&!i(k)){var m=e.schemaPath+\".type\",g=e.errSchemaPath+\"/type\",m=e.schemaPath+\".type\",g=e.errSchemaPath+\"/type\",_=S?\"checkDataTypes\":\"checkDataType\";if(s+=\" if (\"+e.util[_](F,y,!0)+\") { \",$){var B=\"dataType\"+d,D=\"coerced\"+d;s+=\" var \"+B+\" = typeof \"+y+\"; \",\"array\"==e.opts.coerceTypes&&(s+=\" if (\"+B+\" == 'object' && Array.isArray(\"+y+\")) \"+B+\" = 'array'; \"),s+=\" var \"+D+\" = undefined; \";var T=\"\",L=$;if(L)for(var O,R=-1,P=L.length-1;R<P;)O=L[R+=1],R&&(s+=\" if (\"+D+\" === undefined) { \",T+=\"}\"),\"array\"==e.opts.coerceTypes&&\"array\"!=O&&(s+=\" if (\"+B+\" == 'array' && \"+y+\".length == 1) { \"+D+\" = \"+y+\" = \"+y+\"[0]; \"+B+\" = typeof \"+y+\";  } \"),\"string\"==O?s+=\" if (\"+B+\" == 'number' || \"+B+\" == 'boolean') \"+D+\" = '' + \"+y+\"; else if (\"+y+\" === null) \"+D+\" = ''; \":\"number\"==O||\"integer\"==O?(s+=\" if (\"+B+\" == 'boolean' || \"+y+\" === null || (\"+B+\" == 'string' && \"+y+\" && \"+y+\" == +\"+y+\" \",\"integer\"==O&&(s+=\" && !(\"+y+\" % 1)\"),s+=\")) \"+D+\" = +\"+y+\"; \"):\"boolean\"==O?s+=\" if (\"+y+\" === 'false' || \"+y+\" === 0 || \"+y+\" === null) \"+D+\" = false; else if (\"+y+\" === 'true' || \"+y+\" === 1) \"+D+\" = true; \":\"null\"==O?s+=\" if (\"+y+\" === '' || \"+y+\" === 0 || \"+y+\" === false) \"+D+\" = null; \":\"array\"==e.opts.coerceTypes&&\"array\"==O&&(s+=\" if (\"+B+\" == 'string' || \"+B+\" == 'number' || \"+B+\" == 'boolean' || \"+y+\" == null) \"+D+\" = [\"+y+\"]; \");s+=\" \"+T+\" if (\"+D+\" === undefined) {   \";var w=w||[];w.push(s),s=\"\",!1!==e.createErrors?(s+=\" { keyword: '\"+(h||\"type\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(g)+\" , params: { type: '\",s+=S?\"\"+F.join(\",\"):\"\"+F,s+=\"' } \",!1!==e.opts.messages&&(s+=\" , message: 'should be \",s+=S?\"\"+F.join(\",\"):\"\"+F,s+=\"' \"),e.opts.verbose&&(s+=\" , schema: validate.schema\"+m+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+y+\" \"),s+=\" } \"):s+=\" {} \";var C=s;s=w.pop(),!e.compositeRule&&v?e.async?s+=\" throw new ValidationError([\"+C+\"]); \":s+=\" validate.errors = [\"+C+\"]; return false; \":s+=\" var err = \"+C+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",s+=\" } else {  \";var M=f?\"data\"+(f-1||\"\"):\"parentData\",I=f?e.dataPathArr[f]:\"parentDataProperty\";s+=\" \"+y+\" = \"+D+\"; \",f||(s+=\"if (\"+M+\" !== undefined)\"),s+=\" \"+M+\"[\"+I+\"] = \"+D+\"; } \"}else{var w=w||[];w.push(s),s=\"\",!1!==e.createErrors?(s+=\" { keyword: '\"+(h||\"type\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(g)+\" , params: { type: '\",s+=S?\"\"+F.join(\",\"):\"\"+F,s+=\"' } \",!1!==e.opts.messages&&(s+=\" , message: 'should be \",s+=S?\"\"+F.join(\",\"):\"\"+F,s+=\"' \"),e.opts.verbose&&(s+=\" , schema: validate.schema\"+m+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+y+\" \"),s+=\" } \"):s+=\" {} \";var C=s;s=w.pop(),!e.compositeRule&&v?e.async?s+=\" throw new ValidationError([\"+C+\"]); \":s+=\" validate.errors = [\"+C+\"]; return false; \":s+=\" var err = \"+C+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \"}s+=\" } \"}}if(e.schema.$ref&&!l)s+=\" \"+e.RULES.all.$ref.code(e,\"$ref\")+\" \",v&&(s+=\" } if (errors === \",s+=A?\"0\":\"errs_\"+d,s+=\") { \",x+=\"}\");else{e.opts.v5&&e.schema.patternGroups&&e.logger.warn('keyword \"patternGroups\" is deprecated and disabled. Use option patternGroups: true to enable.');var j=e.RULES;if(j)for(var k,N=-1,H=j.length-1;N<H;)if(k=j[N+=1],i(k)){if(k.type&&(s+=\" if (\"+e.util.checkDataType(k.type,y)+\") { \"),e.opts.useDefaults&&!e.compositeRule)if(\"object\"==k.type&&e.schema.properties){var p=e.schema.properties,V=Object.keys(p),W=V;if(W)for(var z,U=-1,K=W.length-1;U<K;){z=W[U+=1];var q=p[z];if(void 0!==q.default){var G=y+e.util.getProperty(z);s+=\"  if (\"+G+\" === undefined) \"+G+\" = \",\"shared\"==e.opts.useDefaults?s+=\" \"+e.useDefault(q.default)+\" \":s+=\" \"+JSON.stringify(q.default)+\" \",s+=\"; \"}}}else if(\"array\"==k.type&&Array.isArray(e.schema.items)){var J=e.schema.items;if(J)for(var q,R=-1,Q=J.length-1;R<Q;)if(q=J[R+=1],void 0!==q.default){var G=y+\"[\"+R+\"]\";s+=\"  if (\"+G+\" === undefined) \"+G+\" = \",\"shared\"==e.opts.useDefaults?s+=\" \"+e.useDefault(q.default)+\" \":s+=\" \"+JSON.stringify(q.default)+\" \",s+=\"; \"}}var Y=k.rules;if(Y)for(var X,Z=-1,ee=Y.length-1;Z<ee;)if(X=Y[Z+=1],r(X)){var te=X.code(e,X.keyword,k.type);te&&(s+=\" \"+te+\" \",v&&(E+=\"}\"))}if(v&&(s+=\" \"+E+\" \",E=\"\"),k.type&&(s+=\" } \",F&&F===k.type&&!$)){s+=\" else { \";var m=e.schemaPath+\".type\",g=e.errSchemaPath+\"/type\",w=w||[];w.push(s),s=\"\",!1!==e.createErrors?(s+=\" { keyword: '\"+(h||\"type\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(g)+\" , params: { type: '\",s+=S?\"\"+F.join(\",\"):\"\"+F,s+=\"' } \",!1!==e.opts.messages&&(s+=\" , message: 'should be \",s+=S?\"\"+F.join(\",\"):\"\"+F,s+=\"' \"),e.opts.verbose&&(s+=\" , schema: validate.schema\"+m+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+y+\" \"),s+=\" } \"):s+=\" {} \";var C=s;s=w.pop(),!e.compositeRule&&v?e.async?s+=\" throw new ValidationError([\"+C+\"]); \":s+=\" validate.errors = [\"+C+\"]; return false; \":s+=\" var err = \"+C+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",s+=\" } \"}v&&(s+=\" if (errors === \",s+=A?\"0\":\"errs_\"+d,s+=\") { \",x+=\"}\")}}return v&&(s+=\" \"+x+\" \"),A?(a?(s+=\" if (errors === 0) return data;           \",s+=\" else throw new ValidationError(vErrors); \"):(s+=\" validate.errors = vErrors; \",s+=\" return errors === 0;       \"),s+=\" }); return validate;\"):s+=\" var \"+b+\" = errors === errs_\"+d+\";\",s=e.util.cleanUpCode(s),A&&(s=e.util.finalCleanUpCode(s,a)),s}},\"52gC\":function(e,t){e.exports=function(e){if(void 0==e)throw TypeError(\"Can't call method on  \"+e);return e}},\"56M6\":function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),h=\"valid\"+r,d=\"errs__\"+r,f=e.util.copy(e),p=\"\";f.level++;var m=\"valid\"+f.level;i+=\"var \"+d+\" = errors;var prevValid\"+r+\" = false;var \"+h+\" = false;\";var g=f.baseId,v=e.compositeRule;e.compositeRule=f.compositeRule=!0;var y=s;if(y)for(var b,w=-1,C=y.length-1;w<C;)b=y[w+=1],e.util.schemaHasRules(b,e.RULES.all)?(f.schema=b,f.schemaPath=a+\"[\"+w+\"]\",f.errSchemaPath=l+\"/\"+w,i+=\"  \"+e.validate(f)+\" \",f.baseId=g):i+=\" var \"+m+\" = true; \",w&&(i+=\" if (\"+m+\" && prevValid\"+r+\") \"+h+\" = false; else { \",p+=\"}\"),i+=\" if (\"+m+\") \"+h+\" = prevValid\"+r+\" = true;\";return e.compositeRule=f.compositeRule=v,i+=p+\"if (!\"+h+\") {   var err =   \",!1!==e.createErrors?(i+=\" { keyword: 'oneOf' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: {} \",!1!==e.opts.messages&&(i+=\" , message: 'should match exactly one schema in oneOf' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \",i+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",!e.compositeRule&&c&&(e.async?i+=\" throw new ValidationError(vErrors); \":i+=\" validate.errors = vErrors; return false; \"),i+=\"} else {  errors = \"+d+\"; if (vErrors !== null) { if (\"+d+\") vErrors.length = \"+d+\"; else vErrors = null; }\",e.opts.allErrors&&(i+=\" } \"),i}},\"56ph\":function(e,t,n){\"use strict\";var i=n(\"hpTH\"),r=n(\"hdQV\"),o=n(\"q21c\"),s={bImg:i.a,bImgLazy:r.a},a={install:function(e){n.i(o.c)(e,s)}};n.i(o.a)(a),t.a=a},\"5mWU\":function(e,t,n){\"use strict\";function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}var r=n(\"/CDJ\"),o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(i(this,e),!t)throw new TypeError(\"Failed to construct '\"+this.constructor.name+\"'. 1 argument required, \"+arguments.length+\" given.\");n.i(r.a)(this,e.defaults(),o,{type:t}),n.i(r.c)(this,{type:n.i(r.d)(),cancelable:n.i(r.d)(),nativeEvent:n.i(r.d)(),target:n.i(r.d)(),relatedTarget:n.i(r.d)(),vueTarget:n.i(r.d)()});var s=!1;this.preventDefault=function(){this.cancelable&&(s=!0)},n.i(r.e)(this,\"defaultPrevented\",{enumerable:!0,get:function(){return s}})}return o(e,null,[{key:\"defaults\",value:function(){return{type:\"\",cancelable:!0,nativeEvent:null,target:null,relatedTarget:null,vueTarget:null}}}]),e}();t.a=s},\"5osV\":function(e,t,n){\"use strict\";function i(e,t,i,s){var a=n.i(r.b)(t.modifiers||{}).filter(function(e){return!o[e]});t.value&&a.push(t.value);var l=function(){s({targets:a,vnode:e})};return n.i(r.b)(o).forEach(function(n){(i[n]||t.modifiers[n])&&e.elm.addEventListener(n,l)}),a}t.a=i;var r=n(\"/CDJ\"),o={hover:!0,click:!0,focus:!0}},\"60E9\":function(e,t,n){\"use strict\";t.a={props:{size:{type:String,default:null}},computed:{sizeFormClass:function(){return[this.size?\"form-control-\"+this.size:null]},sizeBtnClass:function(){return[this.size?\"btn-\"+this.size:null]}}}},\"6nDI\":function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\");if(!1===e.opts.format)return c&&(i+=\" if (true) { \"),i;var h,d=e.opts.$data&&s&&s.$data;d?(i+=\" var schema\"+r+\" = \"+e.util.getData(s.$data,o,e.dataPathArr)+\"; \",h=\"schema\"+r):h=s;var f=e.opts.unknownFormats,p=Array.isArray(f);if(d){var m=\"format\"+r,g=\"isObject\"+r,v=\"formatType\"+r;i+=\" var \"+m+\" = formats[\"+h+\"]; var \"+g+\" = typeof \"+m+\" == 'object' && !(\"+m+\" instanceof RegExp) && \"+m+\".validate; var \"+v+\" = \"+g+\" && \"+m+\".type || 'string'; if (\"+g+\") { \",e.async&&(i+=\" var async\"+r+\" = \"+m+\".async; \"),i+=\" \"+m+\" = \"+m+\".validate; } if (  \",d&&(i+=\" (\"+h+\" !== undefined && typeof \"+h+\" != 'string') || \"),i+=\" (\",\"ignore\"!=f&&(i+=\" (\"+h+\" && !\"+m+\" \",p&&(i+=\" && self._opts.unknownFormats.indexOf(\"+h+\") == -1 \"),i+=\") || \"),i+=\" (\"+m+\" && \"+v+\" == '\"+n+\"' && !(typeof \"+m+\" == 'function' ? \",e.async?i+=\" (async\"+r+\" ? \"+e.yieldAwait+\" \"+m+\"(\"+u+\") : \"+m+\"(\"+u+\")) \":i+=\" \"+m+\"(\"+u+\") \",i+=\" : \"+m+\".test(\"+u+\"))))) {\"}else{var m=e.formats[s];if(!m){if(\"ignore\"==f)return e.logger.warn('unknown format \"'+s+'\" ignored in schema at path \"'+e.errSchemaPath+'\"'),c&&(i+=\" if (true) { \"),i;if(p&&f.indexOf(s)>=0)return c&&(i+=\" if (true) { \"),i;throw new Error('unknown format \"'+s+'\" is used in schema at path \"'+e.errSchemaPath+'\"')}var g=\"object\"==typeof m&&!(m instanceof RegExp)&&m.validate,v=g&&m.type||\"string\";if(g){var y=!0===m.async;m=m.validate}if(v!=n)return c&&(i+=\" if (true) { \"),i;if(y){if(!e.async)throw new Error(\"async format in sync schema\");var b=\"formats\"+e.util.getProperty(s)+\".validate\";i+=\" if (!(\"+e.yieldAwait+\" \"+b+\"(\"+u+\"))) { \"}else{i+=\" if (! \";var b=\"formats\"+e.util.getProperty(s);g&&(b+=\".validate\"),i+=\"function\"==typeof m?\" \"+b+\"(\"+u+\") \":\" \"+b+\".test(\"+u+\") \",i+=\") { \"}}var w=w||[];w.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'format' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { format:  \",i+=d?\"\"+h:\"\"+e.util.toQuotedString(s),i+=\"  } \",!1!==e.opts.messages&&(i+=\" , message: 'should match format \\\"\",i+=d?\"' + \"+h+\" + '\":\"\"+e.util.escapeQuotes(s),i+=\"\\\"' \"),e.opts.verbose&&(i+=\" , schema:  \",i+=d?\"validate.schema\"+a:\"\"+e.util.toQuotedString(s),i+=\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var C=i;return i=w.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+C+\"]); \":i+=\" validate.errors = [\"+C+\"]; return false; \":i+=\" var err = \"+C+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",i+=\" } \",c&&(i+=\" else { \"),i}},\"7+8w\":function(e,t,n){\"use strict\";function i(e,t){return e+n.i(r.a)(t)}t.a=i;var r=n(\"7J+J\")},\"7+uW\":function(e,t,n){\"use strict\";(function(e,n){function i(e){return void 0===e||null===e}function r(e){return void 0!==e&&null!==e}function o(e){return!0===e}function s(e){return!1===e}function a(e){return\"string\"==typeof e||\"number\"==typeof e||\"symbol\"==typeof e||\"boolean\"==typeof e}function l(e){return null!==e&&\"object\"==typeof e}function c(e){return\"[object Object]\"===no.call(e)}function u(e){return\"[object RegExp]\"===no.call(e)}function h(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function d(e){return null==e?\"\":\"object\"==typeof e?JSON.stringify(e,null,2):String(e)}function f(e){var t=parseFloat(e);return isNaN(t)?e:t}function p(e,t){for(var n=Object.create(null),i=e.split(\",\"),r=0;r<i.length;r++)n[i[r]]=!0;return t?function(e){return n[e.toLowerCase()]}:function(e){return n[e]}}function m(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(n,1)}}function g(e,t){return oo.call(e,t)}function v(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}function y(e,t){function n(n){var i=arguments.length;return i?i>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n}function b(e,t){t=t||0;for(var n=e.length-t,i=new Array(n);n--;)i[n]=e[n+t];return i}function w(e,t){for(var n in t)e[n]=t[n];return e}function C(e){for(var t={},n=0;n<e.length;n++)e[n]&&w(t,e[n]);return t}function A(e,t,n){}function E(e,t){if(e===t)return!0;var n=l(e),i=l(t);if(!n||!i)return!n&&!i&&String(e)===String(t);try{var r=Array.isArray(e),o=Array.isArray(t);if(r&&o)return e.length===t.length&&e.every(function(e,n){return E(e,t[n])});if(r||o)return!1;var s=Object.keys(e),a=Object.keys(t);return s.length===a.length&&s.every(function(n){return E(e[n],t[n])})}catch(e){return!1}}function x(e,t){for(var n=0;n<e.length;n++)if(E(e[n],t))return n;return-1}function F(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments))}}function S(e){var t=(e+\"\").charCodeAt(0);return 36===t||95===t}function $(e,t,n,i){Object.defineProperty(e,t,{value:n,enumerable:!!i,writable:!0,configurable:!0})}function k(e){if(!yo.test(e)){var t=e.split(\".\");return function(e){for(var n=0;n<t.length;n++){if(!e)return;e=e[t[n]]}return e}}}function _(e){return\"function\"==typeof e&&/native code/.test(e.toString())}function B(e){jo.target&&No.push(jo.target),jo.target=e}function D(){jo.target=No.pop()}function T(e){return new Ho(void 0,void 0,void 0,String(e))}function L(e,t){var n=e.componentOptions,i=new Ho(e.tag,e.data,e.children,e.text,e.elm,e.context,n,e.asyncFactory);return i.ns=e.ns,i.isStatic=e.isStatic,i.key=e.key,i.isComment=e.isComment,i.fnContext=e.fnContext,i.fnOptions=e.fnOptions,i.fnScopeId=e.fnScopeId,i.isCloned=!0,t&&(e.children&&(i.children=O(e.children,!0)),n&&n.children&&(n.children=O(n.children,!0))),i}function O(e,t){for(var n=e.length,i=new Array(n),r=0;r<n;r++)i[r]=L(e[r],t);return i}function R(e,t,n){e.__proto__=t}function P(e,t,n){for(var i=0,r=n.length;i<r;i++){var o=n[i];$(e,o,t[o])}}function M(e,t){if(l(e)&&!(e instanceof Ho)){var n;return g(e,\"__ob__\")&&e.__ob__ instanceof Go?n=e.__ob__:qo.shouldConvert&&!Oo()&&(Array.isArray(e)||c(e))&&Object.isExtensible(e)&&!e._isVue&&(n=new Go(e)),t&&n&&n.vmCount++,n}}function I(e,t,n,i,r){var o=new jo,s=Object.getOwnPropertyDescriptor(e,t);if(!s||!1!==s.configurable){var a=s&&s.get,l=s&&s.set,c=!r&&M(n);Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){var t=a?a.call(e):n;return jo.target&&(o.depend(),c&&(c.dep.depend(),Array.isArray(t)&&H(t))),t},set:function(t){var i=a?a.call(e):n;t===i||t!==t&&i!==i||(l?l.call(e,t):n=t,c=!r&&M(t),o.notify())}})}}function j(e,t,n){if(Array.isArray(e)&&h(t))return e.length=Math.max(e.length,t),e.splice(t,1,n),n;if(t in e&&!(t in Object.prototype))return e[t]=n,n;var i=e.__ob__;return e._isVue||i&&i.vmCount?n:i?(I(i.value,t,n),i.dep.notify(),n):(e[t]=n,n)}function N(e,t){if(Array.isArray(e)&&h(t))return void e.splice(t,1);var n=e.__ob__;e._isVue||n&&n.vmCount||g(e,t)&&(delete e[t],n&&n.dep.notify())}function H(e){for(var t=void 0,n=0,i=e.length;n<i;n++)t=e[n],t&&t.__ob__&&t.__ob__.dep.depend(),Array.isArray(t)&&H(t)}function V(e,t){if(!t)return e;for(var n,i,r,o=Object.keys(t),s=0;s<o.length;s++)n=o[s],i=e[n],r=t[n],g(e,n)?c(i)&&c(r)&&V(i,r):j(e,n,r);return e}function W(e,t,n){return n?function(){var i=\"function\"==typeof t?t.call(n,n):t,r=\"function\"==typeof e?e.call(n,n):e;return i?V(i,r):r}:t?e?function(){return V(\"function\"==typeof t?t.call(this,this):t,\"function\"==typeof e?e.call(this,this):e)}:t:e}function z(e,t){return t?e?e.concat(t):Array.isArray(t)?t:[t]:e}function U(e,t,n,i){var r=Object.create(e||null);return t?w(r,t):r}function K(e,t){var n=e.props;if(n){var i,r,o,s={};if(Array.isArray(n))for(i=n.length;i--;)\"string\"==typeof(r=n[i])&&(o=ao(r),s[o]={type:null});else if(c(n))for(var a in n)r=n[a],o=ao(a),s[o]=c(r)?r:{type:r};e.props=s}}function q(e,t){var n=e.inject;if(n){var i=e.inject={};if(Array.isArray(n))for(var r=0;r<n.length;r++)i[n[r]]={from:n[r]};else if(c(n))for(var o in n){var s=n[o];i[o]=c(s)?w({from:o},s):{from:s}}}}function G(e){var t=e.directives;if(t)for(var n in t){var i=t[n];\"function\"==typeof i&&(t[n]={bind:i,update:i})}}function J(e,t,n){function i(i){var r=Jo[i]||Xo;l[i]=r(e[i],t[i],n,i)}\"function\"==typeof t&&(t=t.options),K(t,n),q(t,n),G(t);var r=t.extends;if(r&&(e=J(e,r,n)),t.mixins)for(var o=0,s=t.mixins.length;o<s;o++)e=J(e,t.mixins[o],n);var a,l={};for(a in e)i(a);for(a in t)g(e,a)||i(a);return l}function Q(e,t,n,i){if(\"string\"==typeof n){var r=e[t];if(g(r,n))return r[n];var o=ao(n);if(g(r,o))return r[o];var s=lo(o);if(g(r,s))return r[s];return r[n]||r[o]||r[s]}}function Y(e,t,n,i){var r=t[e],o=!g(n,e),s=n[e];if(ee(Boolean,r.type)&&(o&&!g(r,\"default\")?s=!1:ee(String,r.type)||\"\"!==s&&s!==uo(e)||(s=!0)),void 0===s){s=X(i,r,e);var a=qo.shouldConvert;qo.shouldConvert=!0,M(s),qo.shouldConvert=a}return s}function X(e,t,n){if(g(t,\"default\")){var i=t.default;return e&&e.$options.propsData&&void 0===e.$options.propsData[n]&&void 0!==e._props[n]?e._props[n]:\"function\"==typeof i&&\"Function\"!==Z(t.type)?i.call(e):i}}function Z(e){var t=e&&e.toString().match(/^\\s*function (\\w+)/);return t?t[1]:\"\"}function ee(e,t){if(!Array.isArray(t))return Z(t)===Z(e);for(var n=0,i=t.length;n<i;n++)if(Z(t[n])===Z(e))return!0;return!1}function te(e,t,n){if(t)for(var i=t;i=i.$parent;){var r=i.$options.errorCaptured;if(r)for(var o=0;o<r.length;o++)try{var s=!1===r[o].call(i,e,t,n);if(s)return}catch(e){ne(e,i,\"errorCaptured hook\")}}ne(e,t,n)}function ne(e,t,n){if(vo.errorHandler)try{return vo.errorHandler.call(null,e,t,n)}catch(e){ie(e,null,\"config.errorHandler\")}ie(e,t,n)}function ie(e,t,n){if(!wo&&!Co||\"undefined\"==typeof console)throw e;console.error(e)}function re(){es=!1;var e=Zo.slice(0);Zo.length=0;for(var t=0;t<e.length;t++)e[t]()}function oe(e){return e._withTask||(e._withTask=function(){ts=!0;var t=e.apply(null,arguments);return ts=!1,t})}function se(e,t){var n;if(Zo.push(function(){if(e)try{e.call(t)}catch(e){te(e,t,\"nextTick\")}else n&&n(t)}),es||(es=!0,ts?Yo():Qo()),!e&&\"undefined\"!=typeof Promise)return new Promise(function(e){n=e})}function ae(e){le(e,ss),ss.clear()}function le(e,t){var n,i,r=Array.isArray(e);if((r||l(e))&&!Object.isFrozen(e)){if(e.__ob__){var o=e.__ob__.dep.id;if(t.has(o))return;t.add(o)}if(r)for(n=e.length;n--;)le(e[n],t);else for(i=Object.keys(e),n=i.length;n--;)le(e[i[n]],t)}}function ce(e){function t(){var e=arguments,n=t.fns;if(!Array.isArray(n))return n.apply(null,arguments);for(var i=n.slice(),r=0;r<i.length;r++)i[r].apply(null,e)}return t.fns=e,t}function ue(e,t,n,r,o){var s,a,l,c;for(s in e)a=e[s],l=t[s],c=as(s),i(a)||(i(l)?(i(a.fns)&&(a=e[s]=ce(a)),n(c.name,a,c.once,c.capture,c.passive,c.params)):a!==l&&(l.fns=a,e[s]=l));for(s in t)i(e[s])&&(c=as(s),r(c.name,t[s],c.capture))}function he(e,t,n){function s(){n.apply(this,arguments),m(a.fns,s)}e instanceof Ho&&(e=e.data.hook||(e.data.hook={}));var a,l=e[t];i(l)?a=ce([s]):r(l.fns)&&o(l.merged)?(a=l,a.fns.push(s)):a=ce([l,s]),a.merged=!0,e[t]=a}function de(e,t,n){var o=t.options.props;if(!i(o)){var s={},a=e.attrs,l=e.props;if(r(a)||r(l))for(var c in o){var u=uo(c);fe(s,l,c,u,!0)||fe(s,a,c,u,!1)}return s}}function fe(e,t,n,i,o){if(r(t)){if(g(t,n))return e[n]=t[n],o||delete t[n],!0;if(g(t,i))return e[n]=t[i],o||delete t[i],!0}return!1}function pe(e){for(var t=0;t<e.length;t++)if(Array.isArray(e[t]))return Array.prototype.concat.apply([],e);return e}function me(e){return a(e)?[T(e)]:Array.isArray(e)?ve(e):void 0}function ge(e){return r(e)&&r(e.text)&&s(e.isComment)}function ve(e,t){var n,s,l,c,u=[];for(n=0;n<e.length;n++)s=e[n],i(s)||\"boolean\"==typeof s||(l=u.length-1,c=u[l],Array.isArray(s)?s.length>0&&(s=ve(s,(t||\"\")+\"_\"+n),ge(s[0])&&ge(c)&&(u[l]=T(c.text+s[0].text),s.shift()),u.push.apply(u,s)):a(s)?ge(c)?u[l]=T(c.text+s):\"\"!==s&&u.push(T(s)):ge(s)&&ge(c)?u[l]=T(c.text+s.text):(o(e._isVList)&&r(s.tag)&&i(s.key)&&r(t)&&(s.key=\"__vlist\"+t+\"_\"+n+\"__\"),u.push(s)));return u}function ye(e,t){return(e.__esModule||Po&&\"Module\"===e[Symbol.toStringTag])&&(e=e.default),l(e)?t.extend(e):e}function be(e,t,n,i,r){var o=Wo();return o.asyncFactory=e,o.asyncMeta={data:t,context:n,children:i,tag:r},o}function we(e,t,n){if(o(e.error)&&r(e.errorComp))return e.errorComp;if(r(e.resolved))return e.resolved;if(o(e.loading)&&r(e.loadingComp))return e.loadingComp;if(!r(e.contexts)){var s=e.contexts=[n],a=!0,c=function(){for(var e=0,t=s.length;e<t;e++)s[e].$forceUpdate()},u=F(function(n){e.resolved=ye(n,t),a||c()}),h=F(function(t){r(e.errorComp)&&(e.error=!0,c())}),d=e(u,h);return l(d)&&(\"function\"==typeof d.then?i(e.resolved)&&d.then(u,h):r(d.component)&&\"function\"==typeof d.component.then&&(d.component.then(u,h),r(d.error)&&(e.errorComp=ye(d.error,t)),r(d.loading)&&(e.loadingComp=ye(d.loading,t),0===d.delay?e.loading=!0:setTimeout(function(){i(e.resolved)&&i(e.error)&&(e.loading=!0,c())},d.delay||200)),r(d.timeout)&&setTimeout(function(){i(e.resolved)&&h(null)},d.timeout))),a=!1,e.loading?e.loadingComp:e.resolved}e.contexts.push(n)}function Ce(e){return e.isComment&&e.asyncFactory}function Ae(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t];if(r(n)&&(r(n.componentOptions)||Ce(n)))return n}}function Ee(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Se(e,t)}function xe(e,t,n){n?os.$once(e,t):os.$on(e,t)}function Fe(e,t){os.$off(e,t)}function Se(e,t,n){os=e,ue(t,n||{},xe,Fe,e),os=void 0}function $e(e,t){var n={};if(!e)return n;for(var i=0,r=e.length;i<r;i++){var o=e[i],s=o.data;if(s&&s.attrs&&s.attrs.slot&&delete s.attrs.slot,o.context!==t&&o.fnContext!==t||!s||null==s.slot)(n.default||(n.default=[])).push(o);else{var a=s.slot,l=n[a]||(n[a]=[]);\"template\"===o.tag?l.push.apply(l,o.children||[]):l.push(o)}}for(var c in n)n[c].every(ke)&&delete n[c];return n}function ke(e){return e.isComment&&!e.asyncFactory||\" \"===e.text}function _e(e,t){t=t||{};for(var n=0;n<e.length;n++)Array.isArray(e[n])?_e(e[n],t):t[e[n].key]=e[n].fn;return t}function Be(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}function De(e,t,n){e.$el=t,e.$options.render||(e.$options.render=Wo),Pe(e,\"beforeMount\");var i;return i=function(){e._update(e._render(),n)},new gs(e,i,A,null,!0),n=!1,null==e.$vnode&&(e._isMounted=!0,Pe(e,\"mounted\")),e}function Te(e,t,n,i,r){var o=!!(r||e.$options._renderChildren||i.data.scopedSlots||e.$scopedSlots!==to);if(e.$options._parentVnode=i,e.$vnode=i,e._vnode&&(e._vnode.parent=i),e.$options._renderChildren=r,e.$attrs=i.data&&i.data.attrs||to,e.$listeners=n||to,t&&e.$options.props){qo.shouldConvert=!1;for(var s=e._props,a=e.$options._propKeys||[],l=0;l<a.length;l++){var c=a[l];s[c]=Y(c,e.$options.props,t,e)}qo.shouldConvert=!0,e.$options.propsData=t}if(n){var u=e.$options._parentListeners;e.$options._parentListeners=n,Se(e,n,u)}o&&(e.$slots=$e(r,i.context),e.$forceUpdate())}function Le(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function Oe(e,t){if(t){if(e._directInactive=!1,Le(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(var n=0;n<e.$children.length;n++)Oe(e.$children[n]);Pe(e,\"activated\")}}function Re(e,t){if(!(t&&(e._directInactive=!0,Le(e))||e._inactive)){e._inactive=!0;for(var n=0;n<e.$children.length;n++)Re(e.$children[n]);Pe(e,\"deactivated\")}}function Pe(e,t){var n=e.$options[t];if(n)for(var i=0,r=n.length;i<r;i++)try{n[i].call(e)}catch(n){te(n,e,t+\" hook\")}e._hasHookEvent&&e.$emit(\"hook:\"+t)}function Me(){ps=cs.length=us.length=0,hs={},ds=fs=!1}function Ie(){fs=!0;var e,t;for(cs.sort(function(e,t){return e.id-t.id}),ps=0;ps<cs.length;ps++)e=cs[ps],t=e.id,hs[t]=null,e.run();var n=us.slice(),i=cs.slice();Me(),He(n),je(i),Ro&&vo.devtools&&Ro.emit(\"flush\")}function je(e){for(var t=e.length;t--;){var n=e[t],i=n.vm;i._watcher===n&&i._isMounted&&Pe(i,\"updated\")}}function Ne(e){e._inactive=!1,us.push(e)}function He(e){for(var t=0;t<e.length;t++)e[t]._inactive=!0,Oe(e[t],!0)}function Ve(e){var t=e.id;if(null==hs[t]){if(hs[t]=!0,fs){for(var n=cs.length-1;n>ps&&cs[n].id>e.id;)n--;cs.splice(n+1,0,e)}else cs.push(e);ds||(ds=!0,se(Ie))}}function We(e,t,n){vs.get=function(){return this[t][n]},vs.set=function(e){this[t][n]=e},Object.defineProperty(e,n,vs)}function ze(e){e._watchers=[];var t=e.$options;t.props&&Ue(e,t.props),t.methods&&Ye(e,t.methods),t.data?Ke(e):M(e._data={},!0),t.computed&&Ge(e,t.computed),t.watch&&t.watch!==_o&&Xe(e,t.watch)}function Ue(e,t){var n=e.$options.propsData||{},i=e._props={},r=e.$options._propKeys=[],o=!e.$parent;qo.shouldConvert=o;for(var s in t)!function(o){r.push(o);var s=Y(o,t,n,e);I(i,o,s),o in e||We(e,\"_props\",o)}(s);qo.shouldConvert=!0}function Ke(e){var t=e.$options.data;t=e._data=\"function\"==typeof t?qe(t,e):t||{},c(t)||(t={});for(var n=Object.keys(t),i=e.$options.props,r=(e.$options.methods,n.length);r--;){var o=n[r];i&&g(i,o)||S(o)||We(e,\"_data\",o)}M(t,!0)}function qe(e,t){try{return e.call(t,t)}catch(e){return te(e,t,\"data()\"),{}}}function Ge(e,t){var n=e._computedWatchers=Object.create(null),i=Oo();for(var r in t){var o=t[r],s=\"function\"==typeof o?o:o.get;i||(n[r]=new gs(e,s||A,A,ys)),r in e||Je(e,r,o)}}function Je(e,t,n){var i=!Oo();\"function\"==typeof n?(vs.get=i?Qe(t):n,vs.set=A):(vs.get=n.get?i&&!1!==n.cache?Qe(t):n.get:A,vs.set=n.set?n.set:A),Object.defineProperty(e,t,vs)}function Qe(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),jo.target&&t.depend(),t.value}}function Ye(e,t){e.$options.props;for(var n in t)e[n]=null==t[n]?A:y(t[n],e)}function Xe(e,t){for(var n in t){var i=t[n];if(Array.isArray(i))for(var r=0;r<i.length;r++)Ze(e,n,i[r]);else Ze(e,n,i)}}function Ze(e,t,n,i){return c(n)&&(i=n,n=n.handler),\"string\"==typeof n&&(n=e[n]),e.$watch(t,n,i)}function et(e){var t=e.$options.provide;t&&(e._provided=\"function\"==typeof t?t.call(e):t)}function tt(e){var t=nt(e.$options.inject,e);t&&(qo.shouldConvert=!1,Object.keys(t).forEach(function(n){I(e,n,t[n])}),qo.shouldConvert=!0)}function nt(e,t){if(e){for(var n=Object.create(null),i=Po?Reflect.ownKeys(e).filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}):Object.keys(e),r=0;r<i.length;r++){for(var o=i[r],s=e[o].from,a=t;a;){if(a._provided&&s in a._provided){n[o]=a._provided[s];break}a=a.$parent}if(!a&&\"default\"in e[o]){var l=e[o].default;n[o]=\"function\"==typeof l?l.call(t):l}}return n}}function it(e,t){var n,i,o,s,a;if(Array.isArray(e)||\"string\"==typeof e)for(n=new Array(e.length),i=0,o=e.length;i<o;i++)n[i]=t(e[i],i);else if(\"number\"==typeof e)for(n=new Array(e),i=0;i<e;i++)n[i]=t(i+1,i);else if(l(e))for(s=Object.keys(e),n=new Array(s.length),i=0,o=s.length;i<o;i++)a=s[i],n[i]=t(e[a],a,i);return r(n)&&(n._isVList=!0),n}function rt(e,t,n,i){var r,o=this.$scopedSlots[e];if(o)n=n||{},i&&(n=w(w({},i),n)),r=o(n)||t;else{var s=this.$slots[e];s&&(s._rendered=!0),r=s||t}var a=n&&n.slot;return a?this.$createElement(\"template\",{slot:a},r):r}function ot(e){return Q(this.$options,\"filters\",e,!0)||fo}function st(e,t,n,i){var r=vo.keyCodes[t]||n;return r?Array.isArray(r)?-1===r.indexOf(e):r!==e:i?uo(i)!==t:void 0}function at(e,t,n,i,r){if(n)if(l(n)){Array.isArray(n)&&(n=C(n));var o;for(var s in n)!function(s){if(\"class\"===s||\"style\"===s||ro(s))o=e;else{var a=e.attrs&&e.attrs.type;o=i||vo.mustUseProp(t,a,s)?e.domProps||(e.domProps={}):e.attrs||(e.attrs={})}if(!(s in o)&&(o[s]=n[s],r)){(e.on||(e.on={}))[\"update:\"+s]=function(e){n[s]=e}}}(s)}else;return e}function lt(e,t){var n=this._staticTrees||(this._staticTrees=[]),i=n[e];return i&&!t?Array.isArray(i)?O(i):L(i):(i=n[e]=this.$options.staticRenderFns[e].call(this._renderProxy,null,this),ut(i,\"__static__\"+e,!1),i)}function ct(e,t,n){return ut(e,\"__once__\"+t+(n?\"_\"+n:\"\"),!0),e}function ut(e,t,n){if(Array.isArray(e))for(var i=0;i<e.length;i++)e[i]&&\"string\"!=typeof e[i]&&ht(e[i],t+\"_\"+i,n);else ht(e,t,n)}function ht(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=n}function dt(e,t){if(t)if(c(t)){var n=e.on=e.on?w({},e.on):{};for(var i in t){var r=n[i],o=t[i];n[i]=r?[].concat(r,o):o}}else;return e}function ft(e){e._o=ct,e._n=f,e._s=d,e._l=it,e._t=rt,e._q=E,e._i=x,e._m=lt,e._f=ot,e._k=st,e._b=at,e._v=T,e._e=Wo,e._u=_e,e._g=dt}function pt(e,t,n,i,r){var s=r.options;this.data=e,this.props=t,this.children=n,this.parent=i,this.listeners=e.on||to,this.injections=nt(s.inject,i),this.slots=function(){return $e(n,i)};var a=Object.create(i),l=o(s._compiled),c=!l;l&&(this.$options=s,this.$slots=this.slots(),this.$scopedSlots=e.scopedSlots||to),s._scopeId?this._c=function(e,t,n,r){var o=At(a,e,t,n,r,c);return o&&(o.fnScopeId=s._scopeId,o.fnContext=i),o}:this._c=function(e,t,n,i){return At(a,e,t,n,i,c)}}function mt(e,t,n,i,o){var s=e.options,a={},l=s.props;if(r(l))for(var c in l)a[c]=Y(c,l,t||to);else r(n.attrs)&&gt(a,n.attrs),r(n.props)&&gt(a,n.props);var u=new pt(n,a,o,i,e),h=s.render.call(null,u._c,u);return h instanceof Ho&&(h.fnContext=i,h.fnOptions=s,n.slot&&((h.data||(h.data={})).slot=n.slot)),h}function gt(e,t){for(var n in t)e[ao(n)]=t[n]}function vt(e,t,n,s,a){if(!i(e)){var c=n.$options._base;if(l(e)&&(e=c.extend(e)),\"function\"==typeof e){var u;if(i(e.cid)&&(u=e,void 0===(e=we(u,c,n))))return be(u,t,n,s,a);t=t||{},$t(e),r(t.model)&&Ct(e.options,t);var h=de(t,e,a);if(o(e.options.functional))return mt(e,h,t,n,s);var d=t.on;if(t.on=t.nativeOn,o(e.options.abstract)){var f=t.slot;t={},f&&(t.slot=f)}bt(t);var p=e.options.name||a;return new Ho(\"vue-component-\"+e.cid+(p?\"-\"+p:\"\"),t,void 0,void 0,void 0,n,{Ctor:e,propsData:h,listeners:d,tag:a,children:s},u)}}}function yt(e,t,n,i){var o={_isComponent:!0,parent:t,_parentVnode:e,_parentElm:n||null,_refElm:i||null},s=e.data.inlineTemplate;return r(s)&&(o.render=s.render,o.staticRenderFns=s.staticRenderFns),new e.componentOptions.Ctor(o)}function bt(e){e.hook||(e.hook={});for(var t=0;t<ws.length;t++){var n=ws[t],i=e.hook[n],r=bs[n];e.hook[n]=i?wt(r,i):r}}function wt(e,t){return function(n,i,r,o){e(n,i,r,o),t(n,i,r,o)}}function Ct(e,t){var n=e.model&&e.model.prop||\"value\",i=e.model&&e.model.event||\"input\";(t.props||(t.props={}))[n]=t.model.value;var o=t.on||(t.on={});r(o[i])?o[i]=[t.model.callback].concat(o[i]):o[i]=t.model.callback}function At(e,t,n,i,r,s){return(Array.isArray(n)||a(n))&&(r=i,i=n,n=void 0),o(s)&&(r=As),Et(e,t,n,i,r)}function Et(e,t,n,i,o){if(r(n)&&r(n.__ob__))return Wo();if(r(n)&&r(n.is)&&(t=n.is),!t)return Wo();Array.isArray(i)&&\"function\"==typeof i[0]&&(n=n||{},n.scopedSlots={default:i[0]},i.length=0),o===As?i=me(i):o===Cs&&(i=pe(i));var s,a;if(\"string\"==typeof t){var l;a=e.$vnode&&e.$vnode.ns||vo.getTagNamespace(t),s=vo.isReservedTag(t)?new Ho(vo.parsePlatformTagName(t),n,i,void 0,void 0,e):r(l=Q(e.$options,\"components\",t))?vt(l,n,e,i,t):new Ho(t,n,i,void 0,void 0,e)}else s=vt(t,n,e,i);return r(s)?(a&&xt(s,a),s):Wo()}function xt(e,t,n){if(e.ns=t,\"foreignObject\"===e.tag&&(t=void 0,n=!0),r(e.children))for(var s=0,a=e.children.length;s<a;s++){var l=e.children[s];r(l.tag)&&(i(l.ns)||o(n))&&xt(l,t,n)}}function Ft(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,i=n&&n.context;e.$slots=$e(t._renderChildren,i),e.$scopedSlots=to,e._c=function(t,n,i,r){return At(e,t,n,i,r,!1)},e.$createElement=function(t,n,i,r){return At(e,t,n,i,r,!0)};var r=n&&n.data;I(e,\"$attrs\",r&&r.attrs||to,null,!0),I(e,\"$listeners\",t._parentListeners||to,null,!0)}function St(e,t){var n=e.$options=Object.create(e.constructor.options),i=t._parentVnode;n.parent=t.parent,n._parentVnode=i,n._parentElm=t._parentElm,n._refElm=t._refElm;var r=i.componentOptions;n.propsData=r.propsData,n._parentListeners=r.listeners,n._renderChildren=r.children,n._componentTag=r.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}function $t(e){var t=e.options;if(e.super){var n=$t(e.super);if(n!==e.superOptions){e.superOptions=n;var i=kt(e);i&&w(e.extendOptions,i),t=e.options=J(n,e.extendOptions),t.name&&(t.components[t.name]=e)}}return t}function kt(e){var t,n=e.options,i=e.extendOptions,r=e.sealedOptions;for(var o in n)n[o]!==r[o]&&(t||(t={}),t[o]=_t(n[o],i[o],r[o]));return t}function _t(e,t,n){if(Array.isArray(e)){var i=[];n=Array.isArray(n)?n:[n],t=Array.isArray(t)?t:[t];for(var r=0;r<e.length;r++)(t.indexOf(e[r])>=0||n.indexOf(e[r])<0)&&i.push(e[r]);return i}return e}function Bt(e){this._init(e)}function Dt(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=b(arguments,1);return n.unshift(this),\"function\"==typeof e.install?e.install.apply(e,n):\"function\"==typeof e&&e.apply(null,n),t.push(e),this}}function Tt(e){e.mixin=function(e){return this.options=J(this.options,e),this}}function Lt(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,i=n.cid,r=e._Ctor||(e._Ctor={});if(r[i])return r[i];var o=e.name||n.options.name,s=function(e){this._init(e)};return s.prototype=Object.create(n.prototype),s.prototype.constructor=s,s.cid=t++,s.options=J(n.options,e),s.super=n,s.options.props&&Ot(s),s.options.computed&&Rt(s),s.extend=n.extend,s.mixin=n.mixin,s.use=n.use,mo.forEach(function(e){s[e]=n[e]}),o&&(s.options.components[o]=s),s.superOptions=n.options,s.extendOptions=e,s.sealedOptions=w({},s.options),r[i]=s,s}}function Ot(e){var t=e.options.props;for(var n in t)We(e.prototype,\"_props\",n)}function Rt(e){var t=e.options.computed;for(var n in t)Je(e.prototype,n,t[n])}function Pt(e){mo.forEach(function(t){e[t]=function(e,n){return n?(\"component\"===t&&c(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),\"directive\"===t&&\"function\"==typeof n&&(n={bind:n,update:n}),this.options[t+\"s\"][e]=n,n):this.options[t+\"s\"][e]}})}function Mt(e){return e&&(e.Ctor.options.name||e.tag)}function It(e,t){return Array.isArray(e)?e.indexOf(t)>-1:\"string\"==typeof e?e.split(\",\").indexOf(t)>-1:!!u(e)&&e.test(t)}function jt(e,t){var n=e.cache,i=e.keys,r=e._vnode;for(var o in n){var s=n[o];if(s){var a=Mt(s.componentOptions);a&&!t(a)&&Nt(n,o,i,r)}}}function Nt(e,t,n,i){var r=e[t];!r||i&&r.tag===i.tag||r.componentInstance.$destroy(),e[t]=null,m(n,t)}function Ht(e){for(var t=e.data,n=e,i=e;r(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(t=Vt(i.data,t));for(;r(n=n.parent);)n&&n.data&&(t=Vt(t,n.data));return Wt(t.staticClass,t.class)}function Vt(e,t){return{staticClass:zt(e.staticClass,t.staticClass),class:r(e.class)?[e.class,t.class]:t.class}}function Wt(e,t){return r(e)||r(t)?zt(e,Ut(t)):\"\"}function zt(e,t){return e?t?e+\" \"+t:e:t||\"\"}function Ut(e){return Array.isArray(e)?Kt(e):l(e)?qt(e):\"string\"==typeof e?e:\"\"}function Kt(e){for(var t,n=\"\",i=0,o=e.length;i<o;i++)r(t=Ut(e[i]))&&\"\"!==t&&(n&&(n+=\" \"),n+=t);return n}function qt(e){var t=\"\";for(var n in e)e[n]&&(t&&(t+=\" \"),t+=n);return t}function Gt(e){return qs(e)?\"svg\":\"math\"===e?\"math\":void 0}function Jt(e){if(!wo)return!0;if(Js(e))return!1;if(e=e.toLowerCase(),null!=Qs[e])return Qs[e];var t=document.createElement(e);return e.indexOf(\"-\")>-1?Qs[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Qs[e]=/HTMLUnknownElement/.test(t.toString())}function Qt(e){if(\"string\"==typeof e){var t=document.querySelector(e);return t||document.createElement(\"div\")}return e}function Yt(e,t){var n=document.createElement(e);return\"select\"!==e?n:(t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute(\"multiple\",\"multiple\"),n)}function Xt(e,t){return document.createElementNS(Us[e],t)}function Zt(e){return document.createTextNode(e)}function en(e){return document.createComment(e)}function tn(e,t,n){e.insertBefore(t,n)}function nn(e,t){e.removeChild(t)}function rn(e,t){e.appendChild(t)}function on(e){return e.parentNode}function sn(e){return e.nextSibling}function an(e){return e.tagName}function ln(e,t){e.textContent=t}function cn(e,t,n){e.setAttribute(t,n)}function un(e,t){var n=e.data.ref;if(n){var i=e.context,r=e.componentInstance||e.elm,o=i.$refs;t?Array.isArray(o[n])?m(o[n],r):o[n]===r&&(o[n]=void 0):e.data.refInFor?Array.isArray(o[n])?o[n].indexOf(r)<0&&o[n].push(r):o[n]=[r]:o[n]=r}}function hn(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.isComment&&r(e.data)===r(t.data)&&dn(e,t)||o(e.isAsyncPlaceholder)&&e.asyncFactory===t.asyncFactory&&i(t.asyncFactory.error))}function dn(e,t){if(\"input\"!==e.tag)return!0;var n,i=r(n=e.data)&&r(n=n.attrs)&&n.type,o=r(n=t.data)&&r(n=n.attrs)&&n.type;return i===o||Ys(i)&&Ys(o)}function fn(e,t,n){var i,o,s={};for(i=t;i<=n;++i)o=e[i].key,r(o)&&(s[o]=i);return s}function pn(e,t){(e.data.directives||t.data.directives)&&mn(e,t)}function mn(e,t){var n,i,r,o=e===ea,s=t===ea,a=gn(e.data.directives,e.context),l=gn(t.data.directives,t.context),c=[],u=[];for(n in l)i=a[n],r=l[n],i?(r.oldValue=i.value,yn(r,\"update\",t,e),r.def&&r.def.componentUpdated&&u.push(r)):(yn(r,\"bind\",t,e),r.def&&r.def.inserted&&c.push(r));if(c.length){var h=function(){for(var n=0;n<c.length;n++)yn(c[n],\"inserted\",t,e)};o?he(t,\"insert\",h):h()}if(u.length&&he(t,\"postpatch\",function(){for(var n=0;n<u.length;n++)yn(u[n],\"componentUpdated\",t,e)}),!o)for(n in a)l[n]||yn(a[n],\"unbind\",e,e,s)}function gn(e,t){var n=Object.create(null);if(!e)return n;var i,r;for(i=0;i<e.length;i++)r=e[i],r.modifiers||(r.modifiers=ia),n[vn(r)]=r,r.def=Q(t.$options,\"directives\",r.name,!0);return n}function vn(e){return e.rawName||e.name+\".\"+Object.keys(e.modifiers||{}).join(\".\")}function yn(e,t,n,i,r){var o=e.def&&e.def[t];if(o)try{o(n.elm,e,n,i,r)}catch(i){te(i,n.context,\"directive \"+e.name+\" \"+t+\" hook\")}}function bn(e,t){var n=t.componentOptions;if(!(r(n)&&!1===n.Ctor.options.inheritAttrs||i(e.data.attrs)&&i(t.data.attrs))){var o,s,a=t.elm,l=e.data.attrs||{},c=t.data.attrs||{};r(c.__ob__)&&(c=t.data.attrs=w({},c));for(o in c)s=c[o],l[o]!==s&&wn(a,o,s);(xo||So)&&c.value!==l.value&&wn(a,\"value\",c.value);for(o in l)i(c[o])&&(Vs(o)?a.removeAttributeNS(Hs,Ws(o)):js(o)||a.removeAttribute(o))}}function wn(e,t,n){if(Ns(t))zs(n)?e.removeAttribute(t):(n=\"allowfullscreen\"===t&&\"EMBED\"===e.tagName?\"true\":t,e.setAttribute(t,n));else if(js(t))e.setAttribute(t,zs(n)||\"false\"===n?\"false\":\"true\");else if(Vs(t))zs(n)?e.removeAttributeNS(Hs,Ws(t)):e.setAttributeNS(Hs,t,n);else if(zs(n))e.removeAttribute(t);else{if(xo&&!Fo&&\"TEXTAREA\"===e.tagName&&\"placeholder\"===t&&!e.__ieph){var i=function(t){t.stopImmediatePropagation(),e.removeEventListener(\"input\",i)};e.addEventListener(\"input\",i),e.__ieph=!0}e.setAttribute(t,n)}}function Cn(e,t){var n=t.elm,o=t.data,s=e.data;if(!(i(o.staticClass)&&i(o.class)&&(i(s)||i(s.staticClass)&&i(s.class)))){var a=Ht(t),l=n._transitionClasses;r(l)&&(a=zt(a,Ut(l))),a!==n._prevClass&&(n.setAttribute(\"class\",a),n._prevClass=a)}}function An(e){function t(){(s||(s=[])).push(e.slice(p,r).trim()),p=r+1}var n,i,r,o,s,a=!1,l=!1,c=!1,u=!1,h=0,d=0,f=0,p=0;for(r=0;r<e.length;r++)if(i=n,n=e.charCodeAt(r),a)39===n&&92!==i&&(a=!1);else if(l)34===n&&92!==i&&(l=!1);else if(c)96===n&&92!==i&&(c=!1);else if(u)47===n&&92!==i&&(u=!1);else if(124!==n||124===e.charCodeAt(r+1)||124===e.charCodeAt(r-1)||h||d||f){switch(n){case 34:l=!0;break;case 39:a=!0;break;case 96:c=!0;break;case 40:f++;break;case 41:f--;break;case 91:d++;break;case 93:d--;break;case 123:h++;break;case 125:h--}if(47===n){for(var m=r-1,g=void 0;m>=0&&\" \"===(g=e.charAt(m));m--);g&&aa.test(g)||(u=!0)}}else void 0===o?(p=r+1,o=e.slice(0,r).trim()):t();if(void 0===o?o=e.slice(0,r).trim():0!==p&&t(),s)for(r=0;r<s.length;r++)o=En(o,s[r]);return o}function En(e,t){var n=t.indexOf(\"(\");return n<0?'_f(\"'+t+'\")('+e+\")\":'_f(\"'+t.slice(0,n)+'\")('+e+\",\"+t.slice(n+1)}function xn(e){console.error(\"[Vue compiler]: \"+e)}function Fn(e,t){return e?e.map(function(e){return e[t]}).filter(function(e){return e}):[]}function Sn(e,t,n){(e.props||(e.props=[])).push({name:t,value:n}),e.plain=!1}function $n(e,t,n){(e.attrs||(e.attrs=[])).push({name:t,value:n}),e.plain=!1}function kn(e,t,n){e.attrsMap[t]=n,e.attrsList.push({name:t,value:n})}function _n(e,t,n,i,r,o){(e.directives||(e.directives=[])).push({name:t,rawName:n,value:i,arg:r,modifiers:o}),e.plain=!1}function Bn(e,t,n,i,r,o){i=i||to,i.capture&&(delete i.capture,t=\"!\"+t),i.once&&(delete i.once,t=\"~\"+t),i.passive&&(delete i.passive,t=\"&\"+t),\"click\"===t&&(i.right?(t=\"contextmenu\",delete i.right):i.middle&&(t=\"mouseup\"));var s;i.native?(delete i.native,s=e.nativeEvents||(e.nativeEvents={})):s=e.events||(e.events={});var a={value:n};i!==to&&(a.modifiers=i);var l=s[t];Array.isArray(l)?r?l.unshift(a):l.push(a):s[t]=l?r?[a,l]:[l,a]:a,e.plain=!1}function Dn(e,t,n){var i=Tn(e,\":\"+t)||Tn(e,\"v-bind:\"+t);if(null!=i)return An(i);if(!1!==n){var r=Tn(e,t);if(null!=r)return JSON.stringify(r)}}function Tn(e,t,n){var i;if(null!=(i=e.attrsMap[t]))for(var r=e.attrsList,o=0,s=r.length;o<s;o++)if(r[o].name===t){r.splice(o,1);break}return n&&delete e.attrsMap[t],i}function Ln(e,t,n){var i=n||{},r=i.number,o=i.trim,s=\"$$v\";o&&(s=\"(typeof $$v === 'string'? $$v.trim(): $$v)\"),r&&(s=\"_n(\"+s+\")\");var a=On(t,s);e.model={value:\"(\"+t+\")\",expression:'\"'+t+'\"',callback:\"function ($$v) {\"+a+\"}\"}}function On(e,t){var n=Rn(e);return null===n.key?e+\"=\"+t:\"$set(\"+n.exp+\", \"+n.key+\", \"+t+\")\"}function Rn(e){if($s=e.length,e.indexOf(\"[\")<0||e.lastIndexOf(\"]\")<$s-1)return Bs=e.lastIndexOf(\".\"),Bs>-1?{exp:e.slice(0,Bs),key:'\"'+e.slice(Bs+1)+'\"'}:{exp:e,key:null};for(ks=e,Bs=Ds=Ts=0;!Mn();)_s=Pn(),In(_s)?Nn(_s):91===_s&&jn(_s);return{exp:e.slice(0,Ds),key:e.slice(Ds+1,Ts)}}function Pn(){return ks.charCodeAt(++Bs)}function Mn(){return Bs>=$s}function In(e){return 34===e||39===e}function jn(e){var t=1;for(Ds=Bs;!Mn();)if(e=Pn(),In(e))Nn(e);else if(91===e&&t++,93===e&&t--,0===t){Ts=Bs;break}}function Nn(e){for(var t=e;!Mn()&&(e=Pn())!==t;);}function Hn(e,t,n){Ls=n;var i=t.value,r=t.modifiers,o=e.tag,s=e.attrsMap.type;if(e.component)return Ln(e,i,r),!1;if(\"select\"===o)zn(e,i,r);else if(\"input\"===o&&\"checkbox\"===s)Vn(e,i,r);else if(\"input\"===o&&\"radio\"===s)Wn(e,i,r);else if(\"input\"===o||\"textarea\"===o)Un(e,i,r);else if(!vo.isReservedTag(o))return Ln(e,i,r),!1;return!0}function Vn(e,t,n){var i=n&&n.number,r=Dn(e,\"value\")||\"null\",o=Dn(e,\"true-value\")||\"true\",s=Dn(e,\"false-value\")||\"false\";Sn(e,\"checked\",\"Array.isArray(\"+t+\")?_i(\"+t+\",\"+r+\")>-1\"+(\"true\"===o?\":(\"+t+\")\":\":_q(\"+t+\",\"+o+\")\")),Bn(e,\"change\",\"var $$a=\"+t+\",$$el=$event.target,$$c=$$el.checked?(\"+o+\"):(\"+s+\");if(Array.isArray($$a)){var $$v=\"+(i?\"_n(\"+r+\")\":r)+\",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&(\"+t+\"=$$a.concat([$$v]))}else{$$i>-1&&(\"+t+\"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{\"+On(t,\"$$c\")+\"}\",null,!0)}function Wn(e,t,n){var i=n&&n.number,r=Dn(e,\"value\")||\"null\";r=i?\"_n(\"+r+\")\":r,Sn(e,\"checked\",\"_q(\"+t+\",\"+r+\")\"),Bn(e,\"change\",On(t,r),null,!0)}function zn(e,t,n){var i=n&&n.number,r='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return '+(i?\"_n(val)\":\"val\")+\"})\",o=\"var $$selectedVal = \"+r+\";\";o=o+\" \"+On(t,\"$event.target.multiple ? $$selectedVal : $$selectedVal[0]\"),Bn(e,\"change\",o,null,!0)}function Un(e,t,n){var i=e.attrsMap.type,r=n||{},o=r.lazy,s=r.number,a=r.trim,l=!o&&\"range\"!==i,c=o?\"change\":\"range\"===i?la:\"input\",u=\"$event.target.value\";a&&(u=\"$event.target.value.trim()\"),s&&(u=\"_n(\"+u+\")\");var h=On(t,u);l&&(h=\"if($event.target.composing)return;\"+h),Sn(e,\"value\",\"(\"+t+\")\"),Bn(e,c,h,null,!0),(a||s)&&Bn(e,\"blur\",\"$forceUpdate()\")}function Kn(e){if(r(e[la])){var t=xo?\"change\":\"input\";e[t]=[].concat(e[la],e[t]||[]),delete e[la]}r(e[ca])&&(e.change=[].concat(e[ca],e.change||[]),delete e[ca])}function qn(e,t,n){var i=Os;return function r(){null!==e.apply(null,arguments)&&Jn(t,r,n,i)}}function Gn(e,t,n,i,r){t=oe(t),n&&(t=qn(t,e,i)),Os.addEventListener(e,t,Bo?{capture:i,passive:r}:i)}function Jn(e,t,n,i){(i||Os).removeEventListener(e,t._withTask||t,n)}function Qn(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Os=t.elm,Kn(n),ue(n,r,Gn,Jn,t.context),Os=void 0}}function Yn(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,o,s=t.elm,a=e.data.domProps||{},l=t.data.domProps||{};r(l.__ob__)&&(l=t.data.domProps=w({},l));for(n in a)i(l[n])&&(s[n]=\"\");for(n in l){if(o=l[n],\"textContent\"===n||\"innerHTML\"===n){if(t.children&&(t.children.length=0),o===a[n])continue;1===s.childNodes.length&&s.removeChild(s.childNodes[0])}if(\"value\"===n){s._value=o;var c=i(o)?\"\":String(o);Xn(s,c)&&(s.value=c)}else s[n]=o}}}function Xn(e,t){return!e.composing&&(\"OPTION\"===e.tagName||Zn(e,t)||ei(e,t))}function Zn(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}function ei(e,t){var n=e.value,i=e._vModifiers;if(r(i)){if(i.lazy)return!1;if(i.number)return f(n)!==f(t);if(i.trim)return n.trim()!==t.trim()}return n!==t}function ti(e){var t=ni(e.style);return e.staticStyle?w(e.staticStyle,t):t}function ni(e){return Array.isArray(e)?C(e):\"string\"==typeof e?da(e):e}function ii(e,t){var n,i={};if(t)for(var r=e;r.componentInstance;)(r=r.componentInstance._vnode)&&r.data&&(n=ti(r.data))&&w(i,n);(n=ti(e.data))&&w(i,n);for(var o=e;o=o.parent;)o.data&&(n=ti(o.data))&&w(i,n);return i}function ri(e,t){var n=t.data,o=e.data;if(!(i(n.staticStyle)&&i(n.style)&&i(o.staticStyle)&&i(o.style))){var s,a,l=t.elm,c=o.staticStyle,u=o.normalizedStyle||o.style||{},h=c||u,d=ni(t.data.style)||{};t.data.normalizedStyle=r(d.__ob__)?w({},d):d;var f=ii(t,!0);for(a in h)i(f[a])&&ma(l,a,\"\");for(a in f)(s=f[a])!==h[a]&&ma(l,a,null==s?\"\":s)}}function oi(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(\" \")>-1?t.split(/\\s+/).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=\" \"+(e.getAttribute(\"class\")||\"\")+\" \";n.indexOf(\" \"+t+\" \")<0&&e.setAttribute(\"class\",(n+t).trim())}}function si(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(\" \")>-1?t.split(/\\s+/).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute(\"class\");else{for(var n=\" \"+(e.getAttribute(\"class\")||\"\")+\" \",i=\" \"+t+\" \";n.indexOf(i)>=0;)n=n.replace(i,\" \");n=n.trim(),n?e.setAttribute(\"class\",n):e.removeAttribute(\"class\")}}function ai(e){if(e){if(\"object\"==typeof e){var t={};return!1!==e.css&&w(t,ba(e.name||\"v\")),w(t,e),t}return\"string\"==typeof e?ba(e):void 0}}function li(e){$a(function(){$a(e)})}function ci(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),oi(e,t))}function ui(e,t){e._transitionClasses&&m(e._transitionClasses,t),si(e,t)}function hi(e,t,n){var i=di(e,t),r=i.type,o=i.timeout,s=i.propCount;if(!r)return n();var a=r===Ca?xa:Sa,l=0,c=function(){e.removeEventListener(a,u),n()},u=function(t){t.target===e&&++l>=s&&c()};setTimeout(function(){l<s&&c()},o+1),e.addEventListener(a,u)}function di(e,t){var n,i=window.getComputedStyle(e),r=i[Ea+\"Delay\"].split(\", \"),o=i[Ea+\"Duration\"].split(\", \"),s=fi(r,o),a=i[Fa+\"Delay\"].split(\", \"),l=i[Fa+\"Duration\"].split(\", \"),c=fi(a,l),u=0,h=0;return t===Ca?s>0&&(n=Ca,u=s,h=o.length):t===Aa?c>0&&(n=Aa,u=c,h=l.length):(u=Math.max(s,c),n=u>0?s>c?Ca:Aa:null,h=n?n===Ca?o.length:l.length:0),{type:n,timeout:u,propCount:h,hasTransform:n===Ca&&ka.test(i[Ea+\"Property\"])}}function fi(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max.apply(null,t.map(function(t,n){return pi(t)+pi(e[n])}))}function pi(e){return 1e3*Number(e.slice(0,-1))}function mi(e,t){var n=e.elm;r(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var o=ai(e.data.transition);if(!i(o)&&!r(n._enterCb)&&1===n.nodeType){for(var s=o.css,a=o.type,c=o.enterClass,u=o.enterToClass,h=o.enterActiveClass,d=o.appearClass,p=o.appearToClass,m=o.appearActiveClass,g=o.beforeEnter,v=o.enter,y=o.afterEnter,b=o.enterCancelled,w=o.beforeAppear,C=o.appear,A=o.afterAppear,E=o.appearCancelled,x=o.duration,S=ls,$=ls.$vnode;$&&$.parent;)$=$.parent,S=$.context;var k=!S._isMounted||!e.isRootInsert;if(!k||C||\"\"===C){var _=k&&d?d:c,B=k&&m?m:h,D=k&&p?p:u,T=k?w||g:g,L=k&&\"function\"==typeof C?C:v,O=k?A||y:y,R=k?E||b:b,P=f(l(x)?x.enter:x),M=!1!==s&&!Fo,I=yi(L),j=n._enterCb=F(function(){M&&(ui(n,D),ui(n,B)),j.cancelled?(M&&ui(n,_),R&&R(n)):O&&O(n),n._enterCb=null});e.data.show||he(e,\"insert\",function(){var t=n.parentNode,i=t&&t._pending&&t._pending[e.key];i&&i.tag===e.tag&&i.elm._leaveCb&&i.elm._leaveCb(),L&&L(n,j)}),T&&T(n),M&&(ci(n,_),ci(n,B),li(function(){ci(n,D),ui(n,_),j.cancelled||I||(vi(P)?setTimeout(j,P):hi(n,a,j))})),e.data.show&&(t&&t(),L&&L(n,j)),M||I||j()}}}function gi(e,t){function n(){E.cancelled||(e.data.show||((o.parentNode._pending||(o.parentNode._pending={}))[e.key]=e),p&&p(o),w&&(ci(o,u),ci(o,d),li(function(){ci(o,h),ui(o,u),E.cancelled||C||(vi(A)?setTimeout(E,A):hi(o,c,E))})),m&&m(o,E),w||C||E())}var o=e.elm;r(o._enterCb)&&(o._enterCb.cancelled=!0,o._enterCb());var s=ai(e.data.transition);if(i(s)||1!==o.nodeType)return t();if(!r(o._leaveCb)){var a=s.css,c=s.type,u=s.leaveClass,h=s.leaveToClass,d=s.leaveActiveClass,p=s.beforeLeave,m=s.leave,g=s.afterLeave,v=s.leaveCancelled,y=s.delayLeave,b=s.duration,w=!1!==a&&!Fo,C=yi(m),A=f(l(b)?b.leave:b),E=o._leaveCb=F(function(){o.parentNode&&o.parentNode._pending&&(o.parentNode._pending[e.key]=null),w&&(ui(o,h),ui(o,d)),E.cancelled?(w&&ui(o,u),v&&v(o)):(t(),g&&g(o)),o._leaveCb=null});y?y(n):n()}}function vi(e){return\"number\"==typeof e&&!isNaN(e)}function yi(e){if(i(e))return!1;var t=e.fns;return r(t)?yi(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function bi(e,t){!0!==t.data.show&&mi(t)}function wi(e,t,n){Ci(e,t,n),(xo||So)&&setTimeout(function(){Ci(e,t,n)},0)}function Ci(e,t,n){var i=t.value,r=e.multiple;if(!r||Array.isArray(i)){for(var o,s,a=0,l=e.options.length;a<l;a++)if(s=e.options[a],r)o=x(i,Ei(s))>-1,s.selected!==o&&(s.selected=o);else if(E(Ei(s),i))return void(e.selectedIndex!==a&&(e.selectedIndex=a));r||(e.selectedIndex=-1)}}function Ai(e,t){return t.every(function(t){return!E(t,e)})}function Ei(e){return\"_value\"in e?e._value:e.value}function xi(e){e.target.composing=!0}function Fi(e){e.target.composing&&(e.target.composing=!1,Si(e.target,\"input\"))}function Si(e,t){var n=document.createEvent(\"HTMLEvents\");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function $i(e){return!e.componentInstance||e.data&&e.data.transition?e:$i(e.componentInstance._vnode)}function ki(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?ki(Ae(t.children)):e}function _i(e){var t={},n=e.$options;for(var i in n.propsData)t[i]=e[i];var r=n._parentListeners;for(var o in r)t[ao(o)]=r[o];return t}function Bi(e,t){if(/\\d-keep-alive$/.test(t.tag))return e(\"keep-alive\",{props:t.componentOptions.propsData})}function Di(e){for(;e=e.parent;)if(e.data.transition)return!0}function Ti(e,t){return t.key===e.key&&t.tag===e.tag}function Li(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function Oi(e){e.data.newPos=e.elm.getBoundingClientRect()}function Ri(e){var t=e.data.pos,n=e.data.newPos,i=t.left-n.left,r=t.top-n.top;if(i||r){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform=\"translate(\"+i+\"px,\"+r+\"px)\",o.transitionDuration=\"0s\"}}function Pi(e,t){var n=t?za(t):Va;if(n.test(e)){for(var i,r,o,s=[],a=[],l=n.lastIndex=0;i=n.exec(e);){r=i.index,r>l&&(a.push(o=e.slice(l,r)),s.push(JSON.stringify(o)));var c=An(i[1].trim());s.push(\"_s(\"+c+\")\"),a.push({\"@binding\":c}),l=r+i[0].length}return l<e.length&&(a.push(o=e.slice(l)),s.push(JSON.stringify(o))),{expression:s.join(\"+\"),tokens:a}}}function Mi(e,t){var n=(t.warn,Tn(e,\"class\"));n&&(e.staticClass=JSON.stringify(n));var i=Dn(e,\"class\",!1);i&&(e.classBinding=i)}function Ii(e){var t=\"\";return e.staticClass&&(t+=\"staticClass:\"+e.staticClass+\",\"),e.classBinding&&(t+=\"class:\"+e.classBinding+\",\"),t}function ji(e,t){var n=(t.warn,Tn(e,\"style\"));if(n){e.staticStyle=JSON.stringify(da(n))}var i=Dn(e,\"style\",!1);i&&(e.styleBinding=i)}function Ni(e){var t=\"\";return e.staticStyle&&(t+=\"staticStyle:\"+e.staticStyle+\",\"),e.styleBinding&&(t+=\"style:(\"+e.styleBinding+\"),\"),t}function Hi(e,t){var n=t?Al:Cl;return e.replace(n,function(e){return wl[e]})}function Vi(e,t){function n(t){u+=t,e=e.substring(t)}function i(e,n,i){var r,a;if(null==n&&(n=u),null==i&&(i=u),e&&(a=e.toLowerCase()),e)for(r=s.length-1;r>=0&&s[r].lowerCasedTag!==a;r--);else r=0;if(r>=0){for(var l=s.length-1;l>=r;l--)t.end&&t.end(s[l].tag,n,i);s.length=r,o=r&&s[r-1].tag}else\"br\"===a?t.start&&t.start(e,[],!0,n,i):\"p\"===a&&(t.start&&t.start(e,[],!1,n,i),t.end&&t.end(e,n,i))}for(var r,o,s=[],a=t.expectHTML,l=t.isUnaryTag||ho,c=t.canBeLeftOpenTag||ho,u=0;e;){if(r=e,o&&yl(o)){var h=0,d=o.toLowerCase(),f=bl[d]||(bl[d]=new RegExp(\"([\\\\s\\\\S]*?)(</\"+d+\"[^>]*>)\",\"i\")),p=e.replace(f,function(e,n,i){return h=i.length,yl(d)||\"noscript\"===d||(n=n.replace(/<!--([\\s\\S]*?)-->/g,\"$1\").replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g,\"$1\")),xl(d,n)&&(n=n.slice(1)),t.chars&&t.chars(n),\"\"});u+=e.length-p.length,e=p,i(d,u-h,u)}else{var m=e.indexOf(\"<\");if(0===m){if(rl.test(e)){var g=e.indexOf(\"--\\x3e\");if(g>=0){t.shouldKeepComment&&t.comment(e.substring(4,g)),n(g+3);continue}}if(ol.test(e)){var v=e.indexOf(\"]>\");if(v>=0){n(v+2);continue}}var y=e.match(il);if(y){n(y[0].length);continue}var b=e.match(nl);if(b){var w=u;n(b[0].length),i(b[1],w,u);continue}var C=function(){var t=e.match(el);if(t){var i={tagName:t[1],attrs:[],start:u};n(t[0].length);for(var r,o;!(r=e.match(tl))&&(o=e.match(Ya));)n(o[0].length),i.attrs.push(o);if(r)return i.unarySlash=r[1],n(r[0].length),i.end=u,i}}();if(C){!function(e){var n=e.tagName,r=e.unarySlash;a&&(\"p\"===o&&Qa(n)&&i(o),c(n)&&o===n&&i(n));for(var u=l(n)||!!r,h=e.attrs.length,d=new Array(h),f=0;f<h;f++){var p=e.attrs[f];sl&&-1===p[0].indexOf('\"\"')&&(\"\"===p[3]&&delete p[3],\"\"===p[4]&&delete p[4],\"\"===p[5]&&delete p[5]);var m=p[3]||p[4]||p[5]||\"\",g=\"a\"===n&&\"href\"===p[1]?t.shouldDecodeNewlinesForHref:t.shouldDecodeNewlines;d[f]={name:p[1],value:Hi(m,g)}}u||(s.push({tag:n,lowerCasedTag:n.toLowerCase(),attrs:d}),o=n),t.start&&t.start(n,d,u,e.start,e.end)}(C),xl(o,e)&&n(1);continue}}var A=void 0,E=void 0,x=void 0;if(m>=0){for(E=e.slice(m);!(nl.test(E)||el.test(E)||rl.test(E)||ol.test(E)||(x=E.indexOf(\"<\",1))<0);)m+=x,E=e.slice(m);A=e.substring(0,m),n(m)}m<0&&(A=e,e=\"\"),t.chars&&A&&t.chars(A)}if(e===r){t.chars&&t.chars(e);break}}i()}function Wi(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:lr(t),parent:n,children:[]}}function zi(e,t){function n(e){e.pre&&(a=!1),dl(e.tag)&&(l=!1);for(var n=0;n<hl.length;n++)hl[n](e,t)}al=t.warn||xn,dl=t.isPreTag||ho,fl=t.mustUseProp||ho,pl=t.getTagNamespace||ho,cl=Fn(t.modules,\"transformNode\"),ul=Fn(t.modules,\"preTransformNode\"),hl=Fn(t.modules,\"postTransformNode\"),ll=t.delimiters;var i,r,o=[],s=!1!==t.preserveWhitespace,a=!1,l=!1;return Vi(e,{warn:al,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,start:function(e,s,c){var u=r&&r.ns||pl(e);xo&&\"svg\"===u&&(s=hr(s));var h=Wi(e,s,r);u&&(h.ns=u),ur(h)&&!Oo()&&(h.forbidden=!0);for(var d=0;d<ul.length;d++)h=ul[d](h,t)||h;if(a||(Ui(h),h.pre&&(a=!0)),dl(h.tag)&&(l=!0),a?Ki(h):h.processed||(Qi(h),Xi(h),nr(h),qi(h,t)),i?o.length||i.if&&(h.elseif||h.else)&&tr(i,{exp:h.elseif,block:h}):i=h,r&&!h.forbidden)if(h.elseif||h.else)Zi(h,r);else if(h.slotScope){r.plain=!1;var f=h.slotTarget||'\"default\"';(r.scopedSlots||(r.scopedSlots={}))[f]=h}else r.children.push(h),h.parent=r;c?n(h):(r=h,o.push(h))},end:function(){var e=o[o.length-1],t=e.children[e.children.length-1];t&&3===t.type&&\" \"===t.text&&!l&&e.children.pop(),o.length-=1,r=o[o.length-1],n(e)},chars:function(e){if(r&&(!xo||\"textarea\"!==r.tag||r.attrsMap.placeholder!==e)){var t=r.children;if(e=l||e.trim()?cr(r)?e:Ll(e):s&&t.length?\" \":\"\"){var n;!a&&\" \"!==e&&(n=Pi(e,ll))?t.push({type:2,expression:n.expression,tokens:n.tokens,text:e}):\" \"===e&&t.length&&\" \"===t[t.length-1].text||t.push({type:3,text:e})}}},comment:function(e){r.children.push({type:3,text:e,isComment:!0})}}),i}function Ui(e){null!=Tn(e,\"v-pre\")&&(e.pre=!0)}function Ki(e){var t=e.attrsList.length;if(t)for(var n=e.attrs=new Array(t),i=0;i<t;i++)n[i]={name:e.attrsList[i].name,value:JSON.stringify(e.attrsList[i].value)};else e.pre||(e.plain=!0)}function qi(e,t){Gi(e),e.plain=!e.key&&!e.attrsList.length,Ji(e),ir(e),rr(e);for(var n=0;n<cl.length;n++)e=cl[n](e,t)||e;or(e)}function Gi(e){var t=Dn(e,\"key\");t&&(e.key=t)}function Ji(e){var t=Dn(e,\"ref\");t&&(e.ref=t,e.refInFor=sr(e))}function Qi(e){var t;if(t=Tn(e,\"v-for\")){var n=Yi(t);n&&w(e,n)}}function Yi(e){var t=e.match($l);if(t){var n={};n.for=t[2].trim();var i=t[1].trim().replace(_l,\"\"),r=i.match(kl);return r?(n.alias=i.replace(kl,\"\"),n.iterator1=r[1].trim(),r[2]&&(n.iterator2=r[2].trim())):n.alias=i,n}}function Xi(e){var t=Tn(e,\"v-if\");if(t)e.if=t,tr(e,{exp:t,block:e});else{null!=Tn(e,\"v-else\")&&(e.else=!0);var n=Tn(e,\"v-else-if\");n&&(e.elseif=n)}}function Zi(e,t){var n=er(t.children);n&&n.if&&tr(n,{exp:e.elseif,block:e})}function er(e){for(var t=e.length;t--;){if(1===e[t].type)return e[t];e.pop()}}function tr(e,t){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push(t)}function nr(e){null!=Tn(e,\"v-once\")&&(e.once=!0)}function ir(e){if(\"slot\"===e.tag)e.slotName=Dn(e,\"name\");else{var t;\"template\"===e.tag?(t=Tn(e,\"scope\"),e.slotScope=t||Tn(e,\"slot-scope\")):(t=Tn(e,\"slot-scope\"))&&(e.slotScope=t);var n=Dn(e,\"slot\");n&&(e.slotTarget='\"\"'===n?'\"default\"':n,\"template\"===e.tag||e.slotScope||$n(e,\"slot\",n))}}function rr(e){var t;(t=Dn(e,\"is\"))&&(e.component=t),null!=Tn(e,\"inline-template\")&&(e.inlineTemplate=!0)}function or(e){var t,n,i,r,o,s,a,l=e.attrsList;for(t=0,n=l.length;t<n;t++)if(i=r=l[t].name,o=l[t].value,Sl.test(i))if(e.hasBindings=!0,s=ar(i),s&&(i=i.replace(Tl,\"\")),Dl.test(i))i=i.replace(Dl,\"\"),o=An(o),a=!1,s&&(s.prop&&(a=!0,\"innerHtml\"===(i=ao(i))&&(i=\"innerHTML\")),s.camel&&(i=ao(i)),s.sync&&Bn(e,\"update:\"+ao(i),On(o,\"$event\"))),a||!e.component&&fl(e.tag,e.attrsMap.type,i)?Sn(e,i,o):$n(e,i,o);else if(Fl.test(i))i=i.replace(Fl,\"\"),Bn(e,i,o,s,!1,al);else{i=i.replace(Sl,\"\");var c=i.match(Bl),u=c&&c[1];u&&(i=i.slice(0,-(u.length+1))),_n(e,i,r,o,u,s)}else{$n(e,i,JSON.stringify(o)),!e.component&&\"muted\"===i&&fl(e.tag,e.attrsMap.type,i)&&Sn(e,i,\"true\")}}function sr(e){for(var t=e;t;){if(void 0!==t.for)return!0;t=t.parent}return!1}function ar(e){var t=e.match(Tl);if(t){var n={};return t.forEach(function(e){n[e.slice(1)]=!0}),n}}function lr(e){for(var t={},n=0,i=e.length;n<i;n++)t[e[n].name]=e[n].value;return t}function cr(e){return\"script\"===e.tag||\"style\"===e.tag}function ur(e){return\"style\"===e.tag||\"script\"===e.tag&&(!e.attrsMap.type||\"text/javascript\"===e.attrsMap.type)}function hr(e){for(var t=[],n=0;n<e.length;n++){var i=e[n];Ol.test(i.name)||(i.name=i.name.replace(Rl,\"\"),t.push(i))}return t}function dr(e,t){if(\"input\"===e.tag){var n=e.attrsMap;if(n[\"v-model\"]&&(n[\"v-bind:type\"]||n[\":type\"])){var i=Dn(e,\"type\"),r=Tn(e,\"v-if\",!0),o=r?\"&&(\"+r+\")\":\"\",s=null!=Tn(e,\"v-else\",!0),a=Tn(e,\"v-else-if\",!0),l=fr(e);Qi(l),kn(l,\"type\",\"checkbox\"),qi(l,t),l.processed=!0,l.if=\"(\"+i+\")==='checkbox'\"+o,tr(l,{exp:l.if,block:l});var c=fr(e);Tn(c,\"v-for\",!0),kn(c,\"type\",\"radio\"),qi(c,t),tr(l,{exp:\"(\"+i+\")==='radio'\"+o,block:c});var u=fr(e);return Tn(u,\"v-for\",!0),kn(u,\":type\",i),qi(u,t),tr(l,{exp:r,block:u}),s?l.else=!0:a&&(l.elseif=a),l}}}function fr(e){return Wi(e.tag,e.attrsList.slice(),e.parent)}function pr(e,t){t.value&&Sn(e,\"textContent\",\"_s(\"+t.value+\")\")}function mr(e,t){t.value&&Sn(e,\"innerHTML\",\"_s(\"+t.value+\")\")}function gr(e,t){e&&(ml=Nl(t.staticKeys||\"\"),gl=t.isReservedTag||ho,yr(e),br(e,!1))}function vr(e){return p(\"type,tag,attrsList,attrsMap,plain,parent,children,attrs\"+(e?\",\"+e:\"\"))}function yr(e){if(e.static=wr(e),1===e.type){if(!gl(e.tag)&&\"slot\"!==e.tag&&null==e.attrsMap[\"inline-template\"])return;for(var t=0,n=e.children.length;t<n;t++){var i=e.children[t];yr(i),i.static||(e.static=!1)}if(e.ifConditions)for(var r=1,o=e.ifConditions.length;r<o;r++){var s=e.ifConditions[r].block;yr(s),s.static||(e.static=!1)}}}function br(e,t){if(1===e.type){if((e.static||e.once)&&(e.staticInFor=t),e.static&&e.children.length&&(1!==e.children.length||3!==e.children[0].type))return void(e.staticRoot=!0);if(e.staticRoot=!1,e.children)for(var n=0,i=e.children.length;n<i;n++)br(e.children[n],t||!!e.for);if(e.ifConditions)for(var r=1,o=e.ifConditions.length;r<o;r++)br(e.ifConditions[r].block,t)}}function wr(e){return 2!==e.type&&(3===e.type||!(!e.pre&&(e.hasBindings||e.if||e.for||io(e.tag)||!gl(e.tag)||Cr(e)||!Object.keys(e).every(ml))))}function Cr(e){for(;e.parent;){if(e=e.parent,\"template\"!==e.tag)return!1;if(e.for)return!0}return!1}function Ar(e,t,n){var i=t?\"nativeOn:{\":\"on:{\";for(var r in e)i+='\"'+r+'\":'+Er(r,e[r])+\",\";return i.slice(0,-1)+\"}\"}function Er(e,t){if(!t)return\"function(){}\";if(Array.isArray(t))return\"[\"+t.map(function(t){return Er(e,t)}).join(\",\")+\"]\";var n=Vl.test(t.value),i=Hl.test(t.value);if(t.modifiers){var r=\"\",o=\"\",s=[];for(var a in t.modifiers)if(Ul[a])o+=Ul[a],Wl[a]&&s.push(a);else if(\"exact\"===a){var l=t.modifiers;o+=zl([\"ctrl\",\"shift\",\"alt\",\"meta\"].filter(function(e){return!l[e]}).map(function(e){return\"$event.\"+e+\"Key\"}).join(\"||\"))}else s.push(a);s.length&&(r+=xr(s)),o&&(r+=o);return\"function($event){\"+r+(n?t.value+\"($event)\":i?\"(\"+t.value+\")($event)\":t.value)+\"}\"}return n||i?t.value:\"function($event){\"+t.value+\"}\"}function xr(e){return\"if(!('button' in $event)&&\"+e.map(Fr).join(\"&&\")+\")return null;\"}function Fr(e){var t=parseInt(e,10);if(t)return\"$event.keyCode!==\"+t;var n=Wl[e];return\"_k($event.keyCode,\"+JSON.stringify(e)+\",\"+JSON.stringify(n)+\",$event.key)\"}function Sr(e,t){e.wrapListeners=function(e){return\"_g(\"+e+\",\"+t.value+\")\"}}function $r(e,t){e.wrapData=function(n){return\"_b(\"+n+\",'\"+e.tag+\"',\"+t.value+\",\"+(t.modifiers&&t.modifiers.prop?\"true\":\"false\")+(t.modifiers&&t.modifiers.sync?\",true\":\"\")+\")\"}}function kr(e,t){var n=new ql(t);return{render:\"with(this){return \"+(e?_r(e,n):'_c(\"div\")')+\"}\",staticRenderFns:n.staticRenderFns}}function _r(e,t){if(e.staticRoot&&!e.staticProcessed)return Br(e,t);if(e.once&&!e.onceProcessed)return Dr(e,t);if(e.for&&!e.forProcessed)return Or(e,t);if(e.if&&!e.ifProcessed)return Tr(e,t);if(\"template\"!==e.tag||e.slotTarget){if(\"slot\"===e.tag)return qr(e,t);var n;if(e.component)n=Gr(e.component,e,t);else{var i=e.plain?void 0:Rr(e,t),r=e.inlineTemplate?null:Hr(e,t,!0);n=\"_c('\"+e.tag+\"'\"+(i?\",\"+i:\"\")+(r?\",\"+r:\"\")+\")\"}for(var o=0;o<t.transforms.length;o++)n=t.transforms[o](e,n);return n}return Hr(e,t)||\"void 0\"}function Br(e,t){return e.staticProcessed=!0,t.staticRenderFns.push(\"with(this){return \"+_r(e,t)+\"}\"),\"_m(\"+(t.staticRenderFns.length-1)+(e.staticInFor?\",true\":\"\")+\")\"}function Dr(e,t){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return Tr(e,t);if(e.staticInFor){for(var n=\"\",i=e.parent;i;){if(i.for){n=i.key;break}i=i.parent}return n?\"_o(\"+_r(e,t)+\",\"+t.onceId+++\",\"+n+\")\":_r(e,t)}return Br(e,t)}function Tr(e,t,n,i){return e.ifProcessed=!0,Lr(e.ifConditions.slice(),t,n,i)}function Lr(e,t,n,i){function r(e){return n?n(e,t):e.once?Dr(e,t):_r(e,t)}if(!e.length)return i||\"_e()\";var o=e.shift();return o.exp?\"(\"+o.exp+\")?\"+r(o.block)+\":\"+Lr(e,t,n,i):\"\"+r(o.block)}function Or(e,t,n,i){var r=e.for,o=e.alias,s=e.iterator1?\",\"+e.iterator1:\"\",a=e.iterator2?\",\"+e.iterator2:\"\";return e.forProcessed=!0,(i||\"_l\")+\"((\"+r+\"),function(\"+o+s+a+\"){return \"+(n||_r)(e,t)+\"})\"}function Rr(e,t){var n=\"{\",i=Pr(e,t);i&&(n+=i+\",\"),e.key&&(n+=\"key:\"+e.key+\",\"),e.ref&&(n+=\"ref:\"+e.ref+\",\"),e.refInFor&&(n+=\"refInFor:true,\"),e.pre&&(n+=\"pre:true,\"),e.component&&(n+='tag:\"'+e.tag+'\",');for(var r=0;r<t.dataGenFns.length;r++)n+=t.dataGenFns[r](e);if(e.attrs&&(n+=\"attrs:{\"+Jr(e.attrs)+\"},\"),e.props&&(n+=\"domProps:{\"+Jr(e.props)+\"},\"),e.events&&(n+=Ar(e.events,!1,t.warn)+\",\"),e.nativeEvents&&(n+=Ar(e.nativeEvents,!0,t.warn)+\",\"),e.slotTarget&&!e.slotScope&&(n+=\"slot:\"+e.slotTarget+\",\"),e.scopedSlots&&(n+=Ir(e.scopedSlots,t)+\",\"),e.model&&(n+=\"model:{value:\"+e.model.value+\",callback:\"+e.model.callback+\",expression:\"+e.model.expression+\"},\"),e.inlineTemplate){var o=Mr(e,t);o&&(n+=o+\",\")}return n=n.replace(/,$/,\"\")+\"}\",e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function Pr(e,t){var n=e.directives;if(n){var i,r,o,s,a=\"directives:[\",l=!1;for(i=0,r=n.length;i<r;i++){o=n[i],s=!0;var c=t.directives[o.name];c&&(s=!!c(e,o,t.warn)),s&&(l=!0,a+='{name:\"'+o.name+'\",rawName:\"'+o.rawName+'\"'+(o.value?\",value:(\"+o.value+\"),expression:\"+JSON.stringify(o.value):\"\")+(o.arg?',arg:\"'+o.arg+'\"':\"\")+(o.modifiers?\",modifiers:\"+JSON.stringify(o.modifiers):\"\")+\"},\")}return l?a.slice(0,-1)+\"]\":void 0}}function Mr(e,t){var n=e.children[0];if(1===n.type){var i=kr(n,t.options);return\"inlineTemplate:{render:function(){\"+i.render+\"},staticRenderFns:[\"+i.staticRenderFns.map(function(e){return\"function(){\"+e+\"}\"}).join(\",\")+\"]}\"}}function Ir(e,t){return\"scopedSlots:_u([\"+Object.keys(e).map(function(n){return jr(n,e[n],t)}).join(\",\")+\"])\"}function jr(e,t,n){return t.for&&!t.forProcessed?Nr(e,t,n):\"{key:\"+e+\",fn:function(\"+String(t.slotScope)+\"){return \"+(\"template\"===t.tag?t.if?t.if+\"?\"+(Hr(t,n)||\"undefined\")+\":undefined\":Hr(t,n)||\"undefined\":_r(t,n))+\"}}\"}function Nr(e,t,n){var i=t.for,r=t.alias,o=t.iterator1?\",\"+t.iterator1:\"\",s=t.iterator2?\",\"+t.iterator2:\"\";return t.forProcessed=!0,\"_l((\"+i+\"),function(\"+r+o+s+\"){return \"+jr(e,t,n)+\"})\"}function Hr(e,t,n,i,r){var o=e.children;if(o.length){var s=o[0];if(1===o.length&&s.for&&\"template\"!==s.tag&&\"slot\"!==s.tag)return(i||_r)(s,t);var a=n?Vr(o,t.maybeComponent):0,l=r||zr;return\"[\"+o.map(function(e){return l(e,t)}).join(\",\")+\"]\"+(a?\",\"+a:\"\")}}function Vr(e,t){for(var n=0,i=0;i<e.length;i++){var r=e[i];if(1===r.type){if(Wr(r)||r.ifConditions&&r.ifConditions.some(function(e){return Wr(e.block)})){n=2;break}(t(r)||r.ifConditions&&r.ifConditions.some(function(e){return t(e.block)}))&&(n=1)}}return n}function Wr(e){return void 0!==e.for||\"template\"===e.tag||\"slot\"===e.tag}function zr(e,t){return 1===e.type?_r(e,t):3===e.type&&e.isComment?Kr(e):Ur(e)}function Ur(e){return\"_v(\"+(2===e.type?e.expression:Qr(JSON.stringify(e.text)))+\")\"}function Kr(e){return\"_e(\"+JSON.stringify(e.text)+\")\"}function qr(e,t){var n=e.slotName||'\"default\"',i=Hr(e,t),r=\"_t(\"+n+(i?\",\"+i:\"\"),o=e.attrs&&\"{\"+e.attrs.map(function(e){return ao(e.name)+\":\"+e.value}).join(\",\")+\"}\",s=e.attrsMap[\"v-bind\"];return!o&&!s||i||(r+=\",null\"),o&&(r+=\",\"+o),s&&(r+=(o?\"\":\",null\")+\",\"+s),r+\")\"}function Gr(e,t,n){var i=t.inlineTemplate?null:Hr(t,n,!0);return\"_c(\"+e+\",\"+Rr(t,n)+(i?\",\"+i:\"\")+\")\"}function Jr(e){for(var t=\"\",n=0;n<e.length;n++){var i=e[n];t+='\"'+i.name+'\":'+Qr(i.value)+\",\"}return t.slice(0,-1)}function Qr(e){return e.replace(/\\u2028/g,\"\\\\u2028\").replace(/\\u2029/g,\"\\\\u2029\")}function Yr(e,t){try{return new Function(e)}catch(n){return t.push({err:n,code:e}),A}}function Xr(e){var t=Object.create(null);return function(n,i,r){i=w({},i);i.warn;delete i.warn;var o=i.delimiters?String(i.delimiters)+n:n;if(t[o])return t[o];var s=e(n,i),a={},l=[];return a.render=Yr(s.render,l),a.staticRenderFns=s.staticRenderFns.map(function(e){return Yr(e,l)}),t[o]=a}}function Zr(e){return vl=vl||document.createElement(\"div\"),vl.innerHTML=e?'<a href=\"\\n\"/>':'<div a=\"\\n\"/>',vl.innerHTML.indexOf(\"&#10;\")>0}function eo(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement(\"div\");return t.appendChild(e.cloneNode(!0)),t.innerHTML}/*!\n * Vue.js v2.5.13\n * (c) 2014-2017 Evan You\n * Released under the MIT License.\n */\nvar to=Object.freeze({}),no=Object.prototype.toString,io=p(\"slot,component\",!0),ro=p(\"key,ref,slot,slot-scope,is\"),oo=Object.prototype.hasOwnProperty,so=/-(\\w)/g,ao=v(function(e){return e.replace(so,function(e,t){return t?t.toUpperCase():\"\"})}),lo=v(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),co=/\\B([A-Z])/g,uo=v(function(e){return e.replace(co,\"-$1\").toLowerCase()}),ho=function(e,t,n){return!1},fo=function(e){return e},po=\"data-server-rendered\",mo=[\"component\",\"directive\",\"filter\"],go=[\"beforeCreate\",\"created\",\"beforeMount\",\"mounted\",\"beforeUpdate\",\"updated\",\"beforeDestroy\",\"destroyed\",\"activated\",\"deactivated\",\"errorCaptured\"],vo={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:ho,isReservedAttr:ho,isUnknownElement:ho,getTagNamespace:A,parsePlatformTagName:fo,mustUseProp:ho,_lifecycleHooks:go},yo=/[^\\w.$]/,bo=\"__proto__\"in{},wo=\"undefined\"!=typeof window,Co=\"undefined\"!=typeof WXEnvironment&&!!WXEnvironment.platform,Ao=Co&&WXEnvironment.platform.toLowerCase(),Eo=wo&&window.navigator.userAgent.toLowerCase(),xo=Eo&&/msie|trident/.test(Eo),Fo=Eo&&Eo.indexOf(\"msie 9.0\")>0,So=Eo&&Eo.indexOf(\"edge/\")>0,$o=Eo&&Eo.indexOf(\"android\")>0||\"android\"===Ao,ko=Eo&&/iphone|ipad|ipod|ios/.test(Eo)||\"ios\"===Ao,_o=(Eo&&/chrome\\/\\d+/.test(Eo),{}.watch),Bo=!1;if(wo)try{var Do={};Object.defineProperty(Do,\"passive\",{get:function(){Bo=!0}}),window.addEventListener(\"test-passive\",null,Do)}catch(e){}var To,Lo,Oo=function(){return void 0===To&&(To=!wo&&void 0!==e&&\"server\"===e.process.env.VUE_ENV),To},Ro=wo&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Po=\"undefined\"!=typeof Symbol&&_(Symbol)&&\"undefined\"!=typeof Reflect&&_(Reflect.ownKeys);Lo=\"undefined\"!=typeof Set&&_(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var Mo=A,Io=0,jo=function(){this.id=Io++,this.subs=[]};jo.prototype.addSub=function(e){this.subs.push(e)},jo.prototype.removeSub=function(e){m(this.subs,e)},jo.prototype.depend=function(){jo.target&&jo.target.addDep(this)},jo.prototype.notify=function(){for(var e=this.subs.slice(),t=0,n=e.length;t<n;t++)e[t].update()},jo.target=null;var No=[],Ho=function(e,t,n,i,r,o,s,a){this.tag=e,this.data=t,this.children=n,this.text=i,this.elm=r,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=s,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=a,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},Vo={child:{configurable:!0}};Vo.child.get=function(){return this.componentInstance},Object.defineProperties(Ho.prototype,Vo);var Wo=function(e){void 0===e&&(e=\"\");var t=new Ho;return t.text=e,t.isComment=!0,t},zo=Array.prototype,Uo=Object.create(zo);[\"push\",\"pop\",\"shift\",\"unshift\",\"splice\",\"sort\",\"reverse\"].forEach(function(e){var t=zo[e];$(Uo,e,function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var r,o=t.apply(this,n),s=this.__ob__;switch(e){case\"push\":case\"unshift\":r=n;break;case\"splice\":r=n.slice(2)}return r&&s.observeArray(r),s.dep.notify(),o})});var Ko=Object.getOwnPropertyNames(Uo),qo={shouldConvert:!0},Go=function(e){if(this.value=e,this.dep=new jo,this.vmCount=0,$(e,\"__ob__\",this),Array.isArray(e)){(bo?R:P)(e,Uo,Ko),this.observeArray(e)}else this.walk(e)};Go.prototype.walk=function(e){for(var t=Object.keys(e),n=0;n<t.length;n++)I(e,t[n],e[t[n]])},Go.prototype.observeArray=function(e){for(var t=0,n=e.length;t<n;t++)M(e[t])};var Jo=vo.optionMergeStrategies;Jo.data=function(e,t,n){return n?W(e,t,n):t&&\"function\"!=typeof t?e:W(e,t)},go.forEach(function(e){Jo[e]=z}),mo.forEach(function(e){Jo[e+\"s\"]=U}),Jo.watch=function(e,t,n,i){if(e===_o&&(e=void 0),t===_o&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;var r={};w(r,e);for(var o in t){var s=r[o],a=t[o];s&&!Array.isArray(s)&&(s=[s]),r[o]=s?s.concat(a):Array.isArray(a)?a:[a]}return r},Jo.props=Jo.methods=Jo.inject=Jo.computed=function(e,t,n,i){if(!e)return t;var r=Object.create(null);return w(r,e),t&&w(r,t),r},Jo.provide=W;var Qo,Yo,Xo=function(e,t){return void 0===t?e:t},Zo=[],es=!1,ts=!1;if(void 0!==n&&_(n))Yo=function(){n(re)};else if(\"undefined\"==typeof MessageChannel||!_(MessageChannel)&&\"[object MessageChannelConstructor]\"!==MessageChannel.toString())Yo=function(){setTimeout(re,0)};else{var ns=new MessageChannel,is=ns.port2;ns.port1.onmessage=re,Yo=function(){is.postMessage(1)}}if(\"undefined\"!=typeof Promise&&_(Promise)){var rs=Promise.resolve();Qo=function(){rs.then(re),ko&&setTimeout(A)}}else Qo=Yo;var os,ss=new Lo,as=v(function(e){var t=\"&\"===e.charAt(0);e=t?e.slice(1):e;var n=\"~\"===e.charAt(0);e=n?e.slice(1):e;var i=\"!\"===e.charAt(0);return e=i?e.slice(1):e,{name:e,once:n,capture:i,passive:t}}),ls=null,cs=[],us=[],hs={},ds=!1,fs=!1,ps=0,ms=0,gs=function(e,t,n,i,r){this.vm=e,r&&(e._watcher=this),e._watchers.push(this),i?(this.deep=!!i.deep,this.user=!!i.user,this.lazy=!!i.lazy,this.sync=!!i.sync):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++ms,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new Lo,this.newDepIds=new Lo,this.expression=\"\",\"function\"==typeof t?this.getter=t:(this.getter=k(t),this.getter||(this.getter=function(){})),this.value=this.lazy?void 0:this.get()};gs.prototype.get=function(){B(this);var e,t=this.vm;try{e=this.getter.call(t,t)}catch(e){if(!this.user)throw e;te(e,t,'getter for watcher \"'+this.expression+'\"')}finally{this.deep&&ae(e),D(),this.cleanupDeps()}return e},gs.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},gs.prototype.cleanupDeps=function(){for(var e=this,t=this.deps.length;t--;){var n=e.deps[t];e.newDepIds.has(n.id)||n.removeSub(e)}var i=this.depIds;this.depIds=this.newDepIds,this.newDepIds=i,this.newDepIds.clear(),i=this.deps,this.deps=this.newDeps,this.newDeps=i,this.newDeps.length=0},gs.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():Ve(this)},gs.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||l(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){te(e,this.vm,'callback for watcher \"'+this.expression+'\"')}else this.cb.call(this.vm,e,t)}}},gs.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},gs.prototype.depend=function(){for(var e=this,t=this.deps.length;t--;)e.deps[t].depend()},gs.prototype.teardown=function(){var e=this;if(this.active){this.vm._isBeingDestroyed||m(this.vm._watchers,this);for(var t=this.deps.length;t--;)e.deps[t].removeSub(e);this.active=!1}};var vs={enumerable:!0,configurable:!0,get:A,set:A},ys={lazy:!0};ft(pt.prototype);var bs={init:function(e,t,n,i){if(!e.componentInstance||e.componentInstance._isDestroyed){(e.componentInstance=yt(e,ls,n,i)).$mount(t?e.elm:void 0,t)}else if(e.data.keepAlive){var r=e;bs.prepatch(r,r)}},prepatch:function(e,t){var n=t.componentOptions;Te(t.componentInstance=e.componentInstance,n.propsData,n.listeners,t,n.children)},insert:function(e){var t=e.context,n=e.componentInstance;n._isMounted||(n._isMounted=!0,Pe(n,\"mounted\")),e.data.keepAlive&&(t._isMounted?Ne(n):Oe(n,!0))},destroy:function(e){var t=e.componentInstance;t._isDestroyed||(e.data.keepAlive?Re(t,!0):t.$destroy())}},ws=Object.keys(bs),Cs=1,As=2,Es=0;!function(e){e.prototype._init=function(e){var t=this;t._uid=Es++,t._isVue=!0,e&&e._isComponent?St(t,e):t.$options=J($t(t.constructor),e||{},t),t._renderProxy=t,t._self=t,Be(t),Ee(t),Ft(t),Pe(t,\"beforeCreate\"),tt(t),ze(t),et(t),Pe(t,\"created\"),t.$options.el&&t.$mount(t.$options.el)}}(Bt),function(e){var t={};t.get=function(){return this._data};var n={};n.get=function(){return this._props},Object.defineProperty(e.prototype,\"$data\",t),Object.defineProperty(e.prototype,\"$props\",n),e.prototype.$set=j,e.prototype.$delete=N,e.prototype.$watch=function(e,t,n){var i=this;if(c(t))return Ze(i,e,t,n);n=n||{},n.user=!0;var r=new gs(i,e,t,n);return n.immediate&&t.call(i,r.value),function(){r.teardown()}}}(Bt),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){var i=this,r=this;if(Array.isArray(e))for(var o=0,s=e.length;o<s;o++)i.$on(e[o],n);else(r._events[e]||(r._events[e]=[])).push(n),t.test(e)&&(r._hasHookEvent=!0);return r},e.prototype.$once=function(e,t){function n(){i.$off(e,n),t.apply(i,arguments)}var i=this;return n.fn=t,i.$on(e,n),i},e.prototype.$off=function(e,t){var n=this,i=this;if(!arguments.length)return i._events=Object.create(null),i;if(Array.isArray(e)){for(var r=0,o=e.length;r<o;r++)n.$off(e[r],t);return i}var s=i._events[e];if(!s)return i;if(!t)return i._events[e]=null,i;if(t)for(var a,l=s.length;l--;)if((a=s[l])===t||a.fn===t){s.splice(l,1);break}return i},e.prototype.$emit=function(e){var t=this,n=t._events[e];if(n){n=n.length>1?b(n):n;for(var i=b(arguments,1),r=0,o=n.length;r<o;r++)try{n[r].apply(t,i)}catch(n){te(n,t,'event handler for \"'+e+'\"')}}return t}}(Bt),function(e){e.prototype._update=function(e,t){var n=this;n._isMounted&&Pe(n,\"beforeUpdate\");var i=n.$el,r=n._vnode,o=ls;ls=n,n._vnode=e,r?n.$el=n.__patch__(r,e):(n.$el=n.__patch__(n.$el,e,t,!1,n.$options._parentElm,n.$options._refElm),n.$options._parentElm=n.$options._refElm=null),ls=o,i&&(i.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},e.prototype.$forceUpdate=function(){var e=this;e._watcher&&e._watcher.update()},e.prototype.$destroy=function(){var e=this;if(!e._isBeingDestroyed){Pe(e,\"beforeDestroy\"),e._isBeingDestroyed=!0;var t=e.$parent;!t||t._isBeingDestroyed||e.$options.abstract||m(t.$children,e),e._watcher&&e._watcher.teardown();for(var n=e._watchers.length;n--;)e._watchers[n].teardown();e._data.__ob__&&e._data.__ob__.vmCount--,e._isDestroyed=!0,e.__patch__(e._vnode,null),Pe(e,\"destroyed\"),e.$off(),e.$el&&(e.$el.__vue__=null),e.$vnode&&(e.$vnode.parent=null)}}}(Bt),function(e){ft(e.prototype),e.prototype.$nextTick=function(e){return se(e,this)},e.prototype._render=function(){var e=this,t=e.$options,n=t.render,i=t._parentVnode;if(e._isMounted)for(var r in e.$slots){var o=e.$slots[r];(o._rendered||o[0]&&o[0].elm)&&(e.$slots[r]=O(o,!0))}e.$scopedSlots=i&&i.data.scopedSlots||to,e.$vnode=i;var s;try{s=n.call(e._renderProxy,e.$createElement)}catch(t){te(t,e,\"render\"),s=e._vnode}return s instanceof Ho||(s=Wo()),s.parent=i,s}}(Bt);var xs=[String,RegExp,Array],Fs={name:\"keep-alive\",abstract:!0,props:{include:xs,exclude:xs,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){var e=this;for(var t in e.cache)Nt(e.cache,t,e.keys)},watch:{include:function(e){jt(this,function(t){return It(e,t)})},exclude:function(e){jt(this,function(t){return!It(e,t)})}},render:function(){var e=this.$slots.default,t=Ae(e),n=t&&t.componentOptions;if(n){var i=Mt(n),r=this,o=r.include,s=r.exclude;if(o&&(!i||!It(o,i))||s&&i&&It(s,i))return t;var a=this,l=a.cache,c=a.keys,u=null==t.key?n.Ctor.cid+(n.tag?\"::\"+n.tag:\"\"):t.key;l[u]?(t.componentInstance=l[u].componentInstance,m(c,u),c.push(u)):(l[u]=t,c.push(u),this.max&&c.length>parseInt(this.max)&&Nt(l,c[0],c,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}},Ss={KeepAlive:Fs};!function(e){var t={};t.get=function(){return vo},Object.defineProperty(e,\"config\",t),e.util={warn:Mo,extend:w,mergeOptions:J,defineReactive:I},e.set=j,e.delete=N,e.nextTick=se,e.options=Object.create(null),mo.forEach(function(t){e.options[t+\"s\"]=Object.create(null)}),e.options._base=e,w(e.options.components,Ss),Dt(e),Tt(e),Lt(e),Pt(e)}(Bt),Object.defineProperty(Bt.prototype,\"$isServer\",{get:Oo}),Object.defineProperty(Bt.prototype,\"$ssrContext\",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Bt.version=\"2.5.13\";var $s,ks,_s,Bs,Ds,Ts,Ls,Os,Rs,Ps=p(\"style,class\"),Ms=p(\"input,textarea,option,select,progress\"),Is=function(e,t,n){return\"value\"===n&&Ms(e)&&\"button\"!==t||\"selected\"===n&&\"option\"===e||\"checked\"===n&&\"input\"===e||\"muted\"===n&&\"video\"===e},js=p(\"contenteditable,draggable,spellcheck\"),Ns=p(\"allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible\"),Hs=\"http://www.w3.org/1999/xlink\",Vs=function(e){return\":\"===e.charAt(5)&&\"xlink\"===e.slice(0,5)},Ws=function(e){return Vs(e)?e.slice(6,e.length):\"\"},zs=function(e){return null==e||!1===e},Us={svg:\"http://www.w3.org/2000/svg\",math:\"http://www.w3.org/1998/Math/MathML\"},Ks=p(\"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot\"),qs=p(\"svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view\",!0),Gs=function(e){return\"pre\"===e},Js=function(e){return Ks(e)||qs(e)},Qs=Object.create(null),Ys=p(\"text,number,password,search,email,tel,url\"),Xs=Object.freeze({createElement:Yt,createElementNS:Xt,createTextNode:Zt,createComment:en,insertBefore:tn,removeChild:nn,appendChild:rn,parentNode:on,nextSibling:sn,tagName:an,setTextContent:ln,setAttribute:cn}),Zs={create:function(e,t){un(t)},update:function(e,t){e.data.ref!==t.data.ref&&(un(e,!0),un(t))},destroy:function(e){un(e,!0)}},ea=new Ho(\"\",{},[]),ta=[\"create\",\"activate\",\"update\",\"remove\",\"destroy\"],na={create:pn,update:pn,destroy:function(e){pn(e,ea)}},ia=Object.create(null),ra=[Zs,na],oa={create:bn,update:bn},sa={create:Cn,update:Cn},aa=/[\\w).+\\-_$\\]]/,la=\"__r\",ca=\"__c\",ua={create:Qn,update:Qn},ha={create:Yn,update:Yn},da=v(function(e){var t={},n=/;(?![^(]*\\))/g,i=/:(.+)/;return e.split(n).forEach(function(e){if(e){var n=e.split(i);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}),fa=/^--/,pa=/\\s*!important$/,ma=function(e,t,n){if(fa.test(t))e.style.setProperty(t,n);else if(pa.test(n))e.style.setProperty(t,n.replace(pa,\"\"),\"important\");else{var i=va(t);if(Array.isArray(n))for(var r=0,o=n.length;r<o;r++)e.style[i]=n[r];else e.style[i]=n}},ga=[\"Webkit\",\"Moz\",\"ms\"],va=v(function(e){if(Rs=Rs||document.createElement(\"div\").style,\"filter\"!==(e=ao(e))&&e in Rs)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<ga.length;n++){var i=ga[n]+t;if(i in Rs)return i}}),ya={create:ri,update:ri},ba=v(function(e){return{enterClass:e+\"-enter\",enterToClass:e+\"-enter-to\",enterActiveClass:e+\"-enter-active\",leaveClass:e+\"-leave\",leaveToClass:e+\"-leave-to\",leaveActiveClass:e+\"-leave-active\"}}),wa=wo&&!Fo,Ca=\"transition\",Aa=\"animation\",Ea=\"transition\",xa=\"transitionend\",Fa=\"animation\",Sa=\"animationend\";wa&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Ea=\"WebkitTransition\",xa=\"webkitTransitionEnd\"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Fa=\"WebkitAnimation\",Sa=\"webkitAnimationEnd\"));var $a=wo?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()},ka=/\\b(transform|all)(,|$)/,_a=wo?{create:bi,activate:bi,remove:function(e,t){!0!==e.data.show?gi(e,t):t()}}:{},Ba=[oa,sa,ua,ha,ya,_a],Da=Ba.concat(ra),Ta=function(e){function t(e){return new Ho(D.tagName(e).toLowerCase(),{},[],void 0,e)}function n(e,t){function n(){0==--n.listeners&&s(e)}return n.listeners=t,n}function s(e){var t=D.parentNode(e);r(t)&&D.removeChild(t,e)}function l(e,t,n,i,s){if(e.isRootInsert=!s,!c(e,t,n,i)){var a=e.data,l=e.children,u=e.tag;r(u)?(e.elm=e.ns?D.createElementNS(e.ns,u):D.createElement(u,e),v(e),f(e,l,t),r(a)&&g(e,t),d(n,e.elm,i)):o(e.isComment)?(e.elm=D.createComment(e.text),d(n,e.elm,i)):(e.elm=D.createTextNode(e.text),d(n,e.elm,i))}}function c(e,t,n,i){var s=e.data;if(r(s)){var a=r(e.componentInstance)&&s.keepAlive;if(r(s=s.hook)&&r(s=s.init)&&s(e,!1,n,i),r(e.componentInstance))return u(e,t),o(a)&&h(e,t,n,i),!0}}function u(e,t){r(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingInsert),e.data.pendingInsert=null),e.elm=e.componentInstance.$el,m(e)?(g(e,t),v(e)):(un(e),t.push(e))}function h(e,t,n,i){for(var o,s=e;s.componentInstance;)if(s=s.componentInstance._vnode,r(o=s.data)&&r(o=o.transition)){for(o=0;o<_.activate.length;++o)_.activate[o](ea,s);t.push(s);break}d(n,e.elm,i)}function d(e,t,n){r(e)&&(r(n)?n.parentNode===e&&D.insertBefore(e,t,n):D.appendChild(e,t))}function f(e,t,n){if(Array.isArray(t))for(var i=0;i<t.length;++i)l(t[i],n,e.elm,null,!0);else a(e.text)&&D.appendChild(e.elm,D.createTextNode(String(e.text)))}function m(e){for(;e.componentInstance;)e=e.componentInstance._vnode;return r(e.tag)}function g(e,t){for(var n=0;n<_.create.length;++n)_.create[n](ea,e);$=e.data.hook,r($)&&(r($.create)&&$.create(ea,e),r($.insert)&&t.push(e))}function v(e){var t;if(r(t=e.fnScopeId))D.setAttribute(e.elm,t,\"\");else for(var n=e;n;)r(t=n.context)&&r(t=t.$options._scopeId)&&D.setAttribute(e.elm,t,\"\"),n=n.parent;r(t=ls)&&t!==e.context&&t!==e.fnContext&&r(t=t.$options._scopeId)&&D.setAttribute(e.elm,t,\"\")}function y(e,t,n,i,r,o){for(;i<=r;++i)l(n[i],o,e,t)}function b(e){var t,n,i=e.data;if(r(i))for(r(t=i.hook)&&r(t=t.destroy)&&t(e),t=0;t<_.destroy.length;++t)_.destroy[t](e);if(r(t=e.children))for(n=0;n<e.children.length;++n)b(e.children[n])}function w(e,t,n,i){for(;n<=i;++n){var o=t[n];r(o)&&(r(o.tag)?(C(o),b(o)):s(o.elm))}}function C(e,t){if(r(t)||r(e.data)){var i,o=_.remove.length+1;for(r(t)?t.listeners+=o:t=n(e.elm,o),r(i=e.componentInstance)&&r(i=i._vnode)&&r(i.data)&&C(i,t),i=0;i<_.remove.length;++i)_.remove[i](e,t);r(i=e.data.hook)&&r(i=i.remove)?i(e,t):t()}else s(e.elm)}function A(e,t,n,o,s){for(var a,c,u,h,d=0,f=0,p=t.length-1,m=t[0],g=t[p],v=n.length-1,b=n[0],C=n[v],A=!s;d<=p&&f<=v;)i(m)?m=t[++d]:i(g)?g=t[--p]:hn(m,b)?(x(m,b,o),m=t[++d],b=n[++f]):hn(g,C)?(x(g,C,o),g=t[--p],C=n[--v]):hn(m,C)?(x(m,C,o),A&&D.insertBefore(e,m.elm,D.nextSibling(g.elm)),m=t[++d],C=n[--v]):hn(g,b)?(x(g,b,o),A&&D.insertBefore(e,g.elm,m.elm),g=t[--p],b=n[++f]):(i(a)&&(a=fn(t,d,p)),c=r(b.key)?a[b.key]:E(b,t,d,p),i(c)?l(b,o,e,m.elm):(u=t[c],hn(u,b)?(x(u,b,o),t[c]=void 0,A&&D.insertBefore(e,u.elm,m.elm)):l(b,o,e,m.elm)),b=n[++f]);d>p?(h=i(n[v+1])?null:n[v+1].elm,y(e,h,n,f,v,o)):f>v&&w(e,t,d,p)}function E(e,t,n,i){for(var o=n;o<i;o++){var s=t[o];if(r(s)&&hn(e,s))return o}}function x(e,t,n,s){if(e!==t){var a=t.elm=e.elm;if(o(e.isAsyncPlaceholder))return void(r(t.asyncFactory.resolved)?S(e.elm,t,n):t.isAsyncPlaceholder=!0);if(o(t.isStatic)&&o(e.isStatic)&&t.key===e.key&&(o(t.isCloned)||o(t.isOnce)))return void(t.componentInstance=e.componentInstance);var l,c=t.data;r(c)&&r(l=c.hook)&&r(l=l.prepatch)&&l(e,t);var u=e.children,h=t.children;if(r(c)&&m(t)){for(l=0;l<_.update.length;++l)_.update[l](e,t);r(l=c.hook)&&r(l=l.update)&&l(e,t)}i(t.text)?r(u)&&r(h)?u!==h&&A(a,u,h,n,s):r(h)?(r(e.text)&&D.setTextContent(a,\"\"),y(a,null,h,0,h.length-1,n)):r(u)?w(a,u,0,u.length-1):r(e.text)&&D.setTextContent(a,\"\"):e.text!==t.text&&D.setTextContent(a,t.text),r(c)&&r(l=c.hook)&&r(l=l.postpatch)&&l(e,t)}}function F(e,t,n){if(o(n)&&r(e.parent))e.parent.data.pendingInsert=t;else for(var i=0;i<t.length;++i)t[i].data.hook.insert(t[i])}function S(e,t,n,i){var s,a=t.tag,l=t.data,c=t.children;if(i=i||l&&l.pre,t.elm=e,o(t.isComment)&&r(t.asyncFactory))return t.isAsyncPlaceholder=!0,!0;if(r(l)&&(r(s=l.hook)&&r(s=s.init)&&s(t,!0),r(s=t.componentInstance)))return u(t,n),!0;if(r(a)){if(r(c))if(e.hasChildNodes())if(r(s=l)&&r(s=s.domProps)&&r(s=s.innerHTML)){if(s!==e.innerHTML)return!1}else{for(var h=!0,d=e.firstChild,p=0;p<c.length;p++){if(!d||!S(d,c[p],n,i)){h=!1;break}d=d.nextSibling}if(!h||d)return!1}else f(t,c,n);if(r(l)){var m=!1;for(var v in l)if(!T(v)){m=!0,g(t,n);break}!m&&l.class&&ae(l.class)}}else e.data!==t.text&&(e.data=t.text);return!0}var $,k,_={},B=e.modules,D=e.nodeOps;for($=0;$<ta.length;++$)for(_[ta[$]]=[],k=0;k<B.length;++k)r(B[k][ta[$]])&&_[ta[$]].push(B[k][ta[$]]);var T=p(\"attrs,class,staticClass,staticStyle,key\");return function(e,n,s,a,c,u){if(i(n))return void(r(e)&&b(e));var h=!1,d=[];if(i(e))h=!0,l(n,d,c,u);else{var f=r(e.nodeType);if(!f&&hn(e,n))x(e,n,d,a);else{if(f){if(1===e.nodeType&&e.hasAttribute(po)&&(e.removeAttribute(po),s=!0),o(s)&&S(e,n,d))return F(n,d,!0),e;e=t(e)}var p=e.elm,g=D.parentNode(p);if(l(n,d,p._leaveCb?null:g,D.nextSibling(p)),r(n.parent))for(var v=n.parent,y=m(n);v;){for(var C=0;C<_.destroy.length;++C)_.destroy[C](v);if(v.elm=n.elm,y){for(var A=0;A<_.create.length;++A)_.create[A](ea,v);var E=v.data.hook.insert;if(E.merged)for(var $=1;$<E.fns.length;$++)E.fns[$]()}else un(v);v=v.parent}r(g)?w(g,[e],0,0):r(e.tag)&&b(e)}}return F(n,d,h),n.elm}}({nodeOps:Xs,modules:Da});Fo&&document.addEventListener(\"selectionchange\",function(){var e=document.activeElement;e&&e.vmodel&&Si(e,\"input\")});var La={inserted:function(e,t,n,i){\"select\"===n.tag?(i.elm&&!i.elm._vOptions?he(n,\"postpatch\",function(){La.componentUpdated(e,t,n)}):wi(e,t,n.context),e._vOptions=[].map.call(e.options,Ei)):(\"textarea\"===n.tag||Ys(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener(\"change\",Fi),$o||(e.addEventListener(\"compositionstart\",xi),e.addEventListener(\"compositionend\",Fi)),Fo&&(e.vmodel=!0)))},componentUpdated:function(e,t,n){if(\"select\"===n.tag){wi(e,t,n.context);var i=e._vOptions,r=e._vOptions=[].map.call(e.options,Ei);if(r.some(function(e,t){return!E(e,i[t])})){(e.multiple?t.value.some(function(e){return Ai(e,r)}):t.value!==t.oldValue&&Ai(t.value,r))&&Si(e,\"change\")}}}},Oa={bind:function(e,t,n){var i=t.value;n=$i(n);var r=n.data&&n.data.transition,o=e.__vOriginalDisplay=\"none\"===e.style.display?\"\":e.style.display;i&&r?(n.data.show=!0,mi(n,function(){e.style.display=o})):e.style.display=i?o:\"none\"},update:function(e,t,n){var i=t.value;i!==t.oldValue&&(n=$i(n),n.data&&n.data.transition?(n.data.show=!0,i?mi(n,function(){e.style.display=e.__vOriginalDisplay}):gi(n,function(){e.style.display=\"none\"})):e.style.display=i?e.__vOriginalDisplay:\"none\")},unbind:function(e,t,n,i,r){r||(e.style.display=e.__vOriginalDisplay)}},Ra={model:La,show:Oa},Pa={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]},Ma={name:\"transition\",props:Pa,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(function(e){return e.tag||Ce(e)}),n.length)){var i=this.mode,r=n[0];if(Di(this.$vnode))return r;var o=ki(r);if(!o)return r;if(this._leaving)return Bi(e,r);var s=\"__transition-\"+this._uid+\"-\";o.key=null==o.key?o.isComment?s+\"comment\":s+o.tag:a(o.key)?0===String(o.key).indexOf(s)?o.key:s+o.key:o.key;var l=(o.data||(o.data={})).transition=_i(this),c=this._vnode,u=ki(c);if(o.data.directives&&o.data.directives.some(function(e){return\"show\"===e.name})&&(o.data.show=!0),u&&u.data&&!Ti(o,u)&&!Ce(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var h=u.data.transition=w({},l);if(\"out-in\"===i)return this._leaving=!0,he(h,\"afterLeave\",function(){t._leaving=!1,t.$forceUpdate()}),Bi(e,r);if(\"in-out\"===i){if(Ce(o))return c;var d,f=function(){d()};he(l,\"afterEnter\",f),he(l,\"enterCancelled\",f),he(h,\"delayLeave\",function(e){d=e})}}return r}}},Ia=w({tag:String,moveClass:String},Pa);delete Ia.mode;var ja={props:Ia,render:function(e){for(var t=this.tag||this.$vnode.data.tag||\"span\",n=Object.create(null),i=this.prevChildren=this.children,r=this.$slots.default||[],o=this.children=[],s=_i(this),a=0;a<r.length;a++){var l=r[a];if(l.tag)if(null!=l.key&&0!==String(l.key).indexOf(\"__vlist\"))o.push(l),n[l.key]=l,(l.data||(l.data={})).transition=s;else;}if(i){for(var c=[],u=[],h=0;h<i.length;h++){var d=i[h];d.data.transition=s,d.data.pos=d.elm.getBoundingClientRect(),n[d.key]?c.push(d):u.push(d)}this.kept=e(t,null,c),this.removed=u}return e(t,null,o)},beforeUpdate:function(){this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept},updated:function(){var e=this.prevChildren,t=this.moveClass||(this.name||\"v\")+\"-move\";e.length&&this.hasMove(e[0].elm,t)&&(e.forEach(Li),e.forEach(Oi),e.forEach(Ri),this._reflow=document.body.offsetHeight,e.forEach(function(e){if(e.data.moved){var n=e.elm,i=n.style;ci(n,t),i.transform=i.WebkitTransform=i.transitionDuration=\"\",n.addEventListener(xa,n._moveCb=function e(i){i&&!/transform$/.test(i.propertyName)||(n.removeEventListener(xa,e),n._moveCb=null,ui(n,t))})}}))},methods:{hasMove:function(e,t){if(!wa)return!1;if(this._hasMove)return this._hasMove;var n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach(function(e){si(n,e)}),oi(n,t),n.style.display=\"none\",this.$el.appendChild(n);var i=di(n);return this.$el.removeChild(n),this._hasMove=i.hasTransform}}},Na={Transition:Ma,TransitionGroup:ja};Bt.config.mustUseProp=Is,Bt.config.isReservedTag=Js,Bt.config.isReservedAttr=Ps,Bt.config.getTagNamespace=Gt,Bt.config.isUnknownElement=Jt,w(Bt.options.directives,Ra),w(Bt.options.components,Na),Bt.prototype.__patch__=wo?Ta:A,Bt.prototype.$mount=function(e,t){return e=e&&wo?Qt(e):void 0,De(this,e,t)},Bt.nextTick(function(){vo.devtools&&Ro&&Ro.emit(\"init\",Bt)},0);var Ha,Va=/\\{\\{((?:.|\\n)+?)\\}\\}/g,Wa=/[-.*+?^${}()|[\\]\\/\\\\]/g,za=v(function(e){var t=e[0].replace(Wa,\"\\\\$&\"),n=e[1].replace(Wa,\"\\\\$&\");return new RegExp(t+\"((?:.|\\\\n)+?)\"+n,\"g\")}),Ua={staticKeys:[\"staticClass\"],transformNode:Mi,genData:Ii},Ka={staticKeys:[\"staticStyle\"],transformNode:ji,genData:Ni},qa={decode:function(e){return Ha=Ha||document.createElement(\"div\"),Ha.innerHTML=e,Ha.textContent}},Ga=p(\"area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr\"),Ja=p(\"colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source\"),Qa=p(\"address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track\"),Ya=/^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/,Xa=\"[a-zA-Z_][\\\\w\\\\-\\\\.]*\",Za=\"((?:\"+Xa+\"\\\\:)?\"+Xa+\")\",el=new RegExp(\"^<\"+Za),tl=/^\\s*(\\/?)>/,nl=new RegExp(\"^<\\\\/\"+Za+\"[^>]*>\"),il=/^<!DOCTYPE [^>]+>/i,rl=/^<!--/,ol=/^<!\\[/,sl=!1;\"x\".replace(/x(.)?/g,function(e,t){sl=\"\"===t});var al,ll,cl,ul,hl,dl,fl,pl,ml,gl,vl,yl=p(\"script,style,textarea\",!0),bl={},wl={\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&amp;\":\"&\",\"&#10;\":\"\\n\",\"&#9;\":\"\\t\"},Cl=/&(?:lt|gt|quot|amp);/g,Al=/&(?:lt|gt|quot|amp|#10|#9);/g,El=p(\"pre,textarea\",!0),xl=function(e,t){return e&&El(e)&&\"\\n\"===t[0]},Fl=/^@|^v-on:/,Sl=/^v-|^@|^:/,$l=/(.*?)\\s+(?:in|of)\\s+(.*)/,kl=/,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/,_l=/^\\(|\\)$/g,Bl=/:(.*)$/,Dl=/^:|^v-bind:/,Tl=/\\.[^.]+/g,Ll=v(qa.decode),Ol=/^xmlns:NS\\d+/,Rl=/^NS\\d+:/,Pl={preTransformNode:dr},Ml=[Ua,Ka,Pl],Il={model:Hn,text:pr,html:mr},jl={expectHTML:!0,modules:Ml,directives:Il,isPreTag:Gs,isUnaryTag:Ga,mustUseProp:Is,canBeLeftOpenTag:Ja,isReservedTag:Js,getTagNamespace:Gt,staticKeys:function(e){return e.reduce(function(e,t){return e.concat(t.staticKeys||[])},[]).join(\",\")}(Ml)},Nl=v(vr),Hl=/^\\s*([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*\\(/,Vl=/^\\s*[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?']|\\[\".*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*\\s*$/,Wl={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},zl=function(e){return\"if(\"+e+\")return null;\"},Ul={stop:\"$event.stopPropagation();\",prevent:\"$event.preventDefault();\",self:zl(\"$event.target !== $event.currentTarget\"),ctrl:zl(\"!$event.ctrlKey\"),shift:zl(\"!$event.shiftKey\"),alt:zl(\"!$event.altKey\"),meta:zl(\"!$event.metaKey\"),left:zl(\"'button' in $event && $event.button !== 0\"),middle:zl(\"'button' in $event && $event.button !== 1\"),right:zl(\"'button' in $event && $event.button !== 2\")},Kl={on:Sr,bind:$r,cloak:A},ql=function(e){this.options=e,this.warn=e.warn||xn,this.transforms=Fn(e.modules,\"transformCode\"),this.dataGenFns=Fn(e.modules,\"genData\"),this.directives=w(w({},Kl),e.directives);var t=e.isReservedTag||ho;this.maybeComponent=function(e){return!t(e.tag)},this.onceId=0,this.staticRenderFns=[]},Gl=(new RegExp(\"\\\\b\"+\"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments\".split(\",\").join(\"\\\\b|\\\\b\")+\"\\\\b\"),new RegExp(\"\\\\b\"+\"delete,typeof,void\".split(\",\").join(\"\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b\")+\"\\\\s*\\\\([^\\\\)]*\\\\)\"),function(e){return function(t){function n(n,i){var r=Object.create(t),o=[],s=[];if(r.warn=function(e,t){(t?s:o).push(e)},i){i.modules&&(r.modules=(t.modules||[]).concat(i.modules)),i.directives&&(r.directives=w(Object.create(t.directives||null),i.directives));for(var a in i)\"modules\"!==a&&\"directives\"!==a&&(r[a]=i[a])}var l=e(n,r);return l.errors=o,l.tips=s,l}return{compile:n,compileToFunctions:Xr(n)}}}(function(e,t){var n=zi(e.trim(),t);!1!==t.optimize&&gr(n,t);var i=kr(n,t);return{ast:n,render:i.render,staticRenderFns:i.staticRenderFns}})),Jl=Gl(jl),Ql=Jl.compileToFunctions,Yl=!!wo&&Zr(!1),Xl=!!wo&&Zr(!0),Zl=v(function(e){var t=Qt(e);return t&&t.innerHTML}),ec=Bt.prototype.$mount;Bt.prototype.$mount=function(e,t){if((e=e&&Qt(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var i=n.template;if(i)if(\"string\"==typeof i)\"#\"===i.charAt(0)&&(i=Zl(i));else{if(!i.nodeType)return this;i=i.innerHTML}else e&&(i=eo(e));if(i){var r=Ql(i,{shouldDecodeNewlines:Yl,shouldDecodeNewlinesForHref:Xl,delimiters:n.delimiters,comments:n.comments},this),o=r.render,s=r.staticRenderFns;n.render=o,n.staticRenderFns=s}}return ec.call(this,e,t)},Bt.compile=Ql,t.a=Bt}).call(t,n(\"DuR2\"),n(\"162o\").setImmediate)},\"71cw\":function(e,t,n){\"use strict\";function i(e,t,n,s){function C(){var e=H.validate,t=e.apply(null,arguments);return C.errors=e.errors,t}function A(e,n,r,o){var s=!n||n&&n.schema==e;if(n.schema!=t.schema)return i.call(D,e,n,r,o);var m=!0===e.$async,C=g({isTop:!0,schema:e,isRoot:s,baseId:o,root:n,schemaPath:\"\",errSchemaPath:\"#\",errorPath:'\"\"',MissingRefError:p.MissingRef,RULES:W,validate:g,util:f,resolve:d,resolveRef:E,usePattern:k,useDefault:_,useCustomRule:B,opts:T,formats:V,logger:D.logger,self:D});C=h(L,c)+h(R,a)+h(M,l)+h(j,u)+C,T.processCode&&(C=T.processCode(C));var A;try{A=new Function(\"self\",\"RULES\",\"formats\",\"root\",\"refVal\",\"defaults\",\"customRules\",\"co\",\"equal\",\"ucs2length\",\"ValidationError\",C)(D,W,V,t,L,M,j,v,b,y,w),L[0]=A}catch(e){throw D.logger.error(\"Error compiling schema, function code:\",C),e}return A.schema=e,A.errors=null,A.refs=O,A.refVal=L,A.root=s?A:n,m&&(A.$async=!0),!0===T.sourceCode&&(A.source={code:C,patterns:R,defaults:M}),A}function E(e,r,o){r=d.url(e,r);var s,a,l=O[r];if(void 0!==l)return s=L[l],a=\"refVal[\"+l+\"]\",$(s,a);if(!o&&t.refs){var c=t.refs[r];if(void 0!==c)return s=t.refVal[c],a=x(r,s),$(s,a)}a=x(r);var u=d.call(D,A,t,r);if(void 0===u){var h=n&&n[r];h&&(u=d.inlineRef(h,T.inlineRefs)?h:i.call(D,h,t,n,e))}if(void 0!==u)return S(r,u),$(u,a);F(r)}function x(e,t){var n=L.length;return L[n]=t,O[e]=n,\"refVal\"+n}function F(e){delete O[e]}function S(e,t){var n=O[e];L[n]=t}function $(e,t){return\"object\"==typeof e||\"boolean\"==typeof e?{code:t,schema:e,inline:!0}:{code:t,$async:e&&e.$async}}function k(e){var t=P[e];return void 0===t&&(t=P[e]=R.length,R[t]=e),\"pattern\"+t}function _(e){switch(typeof e){case\"boolean\":case\"number\":return\"\"+e;case\"string\":return f.toQuotedString(e);case\"object\":if(null===e)return\"null\";var t=m(e),n=I[t];return void 0===n&&(n=I[t]=M.length,M[n]=e),\"default\"+n}}function B(e,t,n,i){var r=e.definition.validateSchema;if(r&&!1!==D._opts.validateSchema){if(!r(t)){var o=\"keyword schema is invalid: \"+D.errorsText(r.errors);if(\"log\"!=D._opts.validateSchema)throw new Error(o);D.logger.error(o)}}var s,a=e.definition.compile,l=e.definition.inline,c=e.definition.macro;if(a)s=a.call(D,t,n,i);else if(c)s=c.call(D,t,n,i),!1!==T.validateSchema&&D.validateSchema(s,!0);else if(l)s=l.call(D,i,e.keyword,t,n);else if(!(s=e.definition.validate))return;if(void 0===s)throw new Error('custom keyword \"'+e.keyword+'\"failed to compile');var u=j.length;return j[u]=s,{code:\"customRule\"+u,validate:s}}var D=this,T=this._opts,L=[void 0],O={},R=[],P={},M=[],I={},j=[];t=t||{schema:e,refVal:L,refs:O};var N=r.call(this,e,t,s),H=this._compilations[N.index];if(N.compiling)return H.callValidate=C;var V=this._formats,W=this.RULES;try{var z=A(e,t,n,s);H.validate=z;var U=H.callValidate;return U&&(U.schema=z.schema,U.errors=null,U.refs=z.refs,U.refVal=z.refVal,U.root=z.root,U.$async=z.$async,T.sourceCode&&(U.source=z.source)),z}finally{o.call(this,e,t,s)}}function r(e,t,n){var i=s.call(this,e,t,n);return i>=0?{index:i,compiling:!0}:(i=this._compilations.length,this._compilations[i]={schema:e,root:t,baseId:n},{index:i,compiling:!1})}function o(e,t,n){var i=s.call(this,e,t,n);i>=0&&this._compilations.splice(i,1)}function s(e,t,n){for(var i=0;i<this._compilations.length;i++){var r=this._compilations[i];if(r.schema==e&&r.root==t&&r.baseId==n)return i}return-1}function a(e,t){return\"var pattern\"+e+\" = new RegExp(\"+f.toQuotedString(t[e])+\");\"}function l(e){return\"var default\"+e+\" = defaults[\"+e+\"];\"}function c(e,t){return void 0===t[e]?\"\":\"var refVal\"+e+\" = refVal[\"+e+\"];\"}function u(e){return\"var customRule\"+e+\" = customRules[\"+e+\"];\"}function h(e,t){if(!e.length)return\"\";for(var n=\"\",i=0;i<e.length;i++)n+=t(i,e);return n}var d=n(\"91JP\"),f=n(\"AM9w\"),p=n(\"c0yX\"),m=n(\"hBsI\"),g=n(\"3pcS\"),v=n(\"sqs/\"),y=f.ucs2length,b=n(\"s6Sk\"),w=p.Validation;e.exports=i},\"77Pl\":function(e,t,n){var i=n(\"EqjI\");e.exports=function(e){if(!i(e))throw TypeError(e+\" is not an object!\");return e}},\"7C8l\":function(e,t,n){\"use strict\";function i(e){console.warn(\"[Bootstrap-Vue warn]: \"+e)}t.a=i},\"7J+J\":function(e,t,n){\"use strict\";function i(e){return\"string\"!=typeof e&&(e=String(e)),e.charAt(0).toUpperCase()+e.slice(1)}t.a=i},\"7KvD\":function(e,t){var n=e.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},\"7XLD\":function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={tag:{type:String,default:\"div\"},deck:{type:Boolean,default:!1},columns:{type:Boolean,default:!1}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.children,a=\"card-group\";return r.columns&&(a=\"card-columns\"),r.deck&&(a=\"card-deck\"),e(r.tag,n.i(i.a)(o,{staticClass:a}),s)}}},\"7cFV\":function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i,r,o=\" \",s=e.level,a=e.dataLevel,l=e.schema[t],c=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+\"/\"+t,h=!e.opts.allErrors,d=\"data\"+(a||\"\"),f=e.opts.$data&&l&&l.$data;f?(o+=\" var schema\"+s+\" = \"+e.util.getData(l.$data,a,e.dataPathArr)+\"; \",r=\"schema\"+s):r=l;var p=\"maxLength\"==t?\">\":\"<\";o+=\"if ( \",f&&(o+=\" (\"+r+\" !== undefined && typeof \"+r+\" != 'number') || \"),!1===e.opts.unicode?o+=\" \"+d+\".length \":o+=\" ucs2length(\"+d+\") \",o+=\" \"+p+\" \"+r+\") { \";var i=t,m=m||[];m.push(o),o=\"\",!1!==e.createErrors?(o+=\" { keyword: '\"+(i||\"_limitLength\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(u)+\" , params: { limit: \"+r+\" } \",!1!==e.opts.messages&&(o+=\" , message: 'should NOT be \",o+=\"maxLength\"==t?\"longer\":\"shorter\",o+=\" than \",o+=f?\"' + \"+r+\" + '\":\"\"+l,o+=\" characters' \"),e.opts.verbose&&(o+=\" , schema:  \",o+=f?\"validate.schema\"+c:\"\"+l,o+=\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),o+=\" } \"):o+=\" {} \";var g=o;return o=m.pop(),!e.compositeRule&&h?e.async?o+=\" throw new ValidationError([\"+g+\"]); \":o+=\" validate.errors = [\"+g+\"]; return false; \":o+=\" var err = \"+g+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",o+=\"} \",h&&(o+=\" else { \"),o}},\"8+8L\":function(e,t,n){\"use strict\";function i(e){this.state=ae,this.value=void 0,this.deferred=[];var t=this;try{e(function(e){t.resolve(e)},function(e){t.reject(e)})}catch(e){t.reject(e)}}function r(e,t){e instanceof Promise?this.promise=e:this.promise=new Promise(e.bind(t)),this.context=t}function o(e){var t=e.config,n=e.nextTick;ue=n,me=t.debug||!t.silent}function s(e){\"undefined\"!=typeof console&&me&&console.warn(\"[VueResource warn]: \"+e)}function a(e){\"undefined\"!=typeof console&&console.error(e)}function l(e,t){return ue(e,t)}function c(e){return e?e.replace(/^\\s*|\\s*$/g,\"\"):\"\"}function u(e,t){return e&&void 0===t?e.replace(/\\s+$/,\"\"):e&&t?e.replace(new RegExp(\"[\"+t+\"]+$\"),\"\"):e}function h(e){return e?e.toLowerCase():\"\"}function d(e){return e?e.toUpperCase():\"\"}function f(e){return\"string\"==typeof e}function p(e){return\"function\"==typeof e}function m(e){return null!==e&&\"object\"==typeof e}function g(e){return m(e)&&Object.getPrototypeOf(e)==Object.prototype}function v(e){return\"undefined\"!=typeof Blob&&e instanceof Blob}function y(e){return\"undefined\"!=typeof FormData&&e instanceof FormData}function b(e,t,n){var i=r.resolve(e);return arguments.length<2?i:i.then(t,n)}function w(e,t,n){return n=n||{},p(n)&&(n=n.call(t)),A(e.bind({$vm:t,$options:n}),e,{$options:n})}function C(e,t){var n,i;if(ve(e))for(n=0;n<e.length;n++)t.call(e[n],e[n],n);else if(m(e))for(i in e)de.call(e,i)&&t.call(e[i],e[i],i);return e}function A(e){return pe.call(arguments,1).forEach(function(t){F(e,t,!0)}),e}function E(e){return pe.call(arguments,1).forEach(function(t){for(var n in t)void 0===e[n]&&(e[n]=t[n])}),e}function x(e){return pe.call(arguments,1).forEach(function(t){F(e,t)}),e}function F(e,t,n){for(var i in t)n&&(g(t[i])||ve(t[i]))?(g(t[i])&&!g(e[i])&&(e[i]={}),ve(t[i])&&!ve(e[i])&&(e[i]=[]),F(e[i],t[i],n)):void 0!==t[i]&&(e[i]=t[i])}function S(e,t){var n=t(e);return f(e.root)&&!/^(https?:)?\\//.test(n)&&(n=u(e.root,\"/\")+\"/\"+n),n}function $(e,t){var n=Object.keys(P.options.params),i={},r=t(e);return C(e.params,function(e,t){-1===n.indexOf(t)&&(i[t]=e)}),i=P.params(i),i&&(r+=(-1==r.indexOf(\"?\")?\"?\":\"&\")+i),r}function k(e,t,n){var i=_(e),r=i.expand(t);return n&&n.push.apply(n,i.vars),r}function _(e){var t=[\"+\",\"#\",\".\",\"/\",\";\",\"?\",\"&\"],n=[];return{vars:n,expand:function(i){return e.replace(/\\{([^{}]+)\\}|([^{}]+)/g,function(e,r,o){if(r){var s=null,a=[];if(-1!==t.indexOf(r.charAt(0))&&(s=r.charAt(0),r=r.substr(1)),r.split(/,/g).forEach(function(e){var t=/([^:*]*)(?::(\\d+)|(\\*))?/.exec(e);a.push.apply(a,B(i,s,t[1],t[2]||t[3])),n.push(t[1])}),s&&\"+\"!==s){var l=\",\";return\"?\"===s?l=\"&\":\"#\"!==s&&(l=s),(0!==a.length?s:\"\")+a.join(l)}return a.join(\",\")}return O(o)})}}}function B(e,t,n,i){var r=e[n],o=[];if(D(r)&&\"\"!==r)if(\"string\"==typeof r||\"number\"==typeof r||\"boolean\"==typeof r)r=r.toString(),i&&\"*\"!==i&&(r=r.substring(0,parseInt(i,10))),o.push(L(t,r,T(t)?n:null));else if(\"*\"===i)Array.isArray(r)?r.filter(D).forEach(function(e){o.push(L(t,e,T(t)?n:null))}):Object.keys(r).forEach(function(e){D(r[e])&&o.push(L(t,r[e],e))});else{var s=[];Array.isArray(r)?r.filter(D).forEach(function(e){s.push(L(t,e))}):Object.keys(r).forEach(function(e){D(r[e])&&(s.push(encodeURIComponent(e)),s.push(L(t,r[e].toString())))}),T(t)?o.push(encodeURIComponent(n)+\"=\"+s.join(\",\")):0!==s.length&&o.push(s.join(\",\"))}else\";\"===t?o.push(encodeURIComponent(n)):\"\"!==r||\"&\"!==t&&\"?\"!==t?\"\"===r&&o.push(\"\"):o.push(encodeURIComponent(n)+\"=\");return o}function D(e){return void 0!==e&&null!==e}function T(e){return\";\"===e||\"&\"===e||\"?\"===e}function L(e,t,n){return t=\"+\"===e||\"#\"===e?O(t):encodeURIComponent(t),n?encodeURIComponent(n)+\"=\"+t:t}function O(e){return e.split(/(%[0-9A-Fa-f]{2})/g).map(function(e){return/%[0-9A-Fa-f]/.test(e)||(e=encodeURI(e)),e}).join(\"\")}function R(e){var t=[],n=k(e.url,e.params,t);return t.forEach(function(t){delete e.params[t]}),n}function P(e,t){var n,i=this||{},r=e;return f(e)&&(r={url:e,params:t}),r=A({},P.options,i.$options,r),P.transforms.forEach(function(e){f(e)&&(e=P.transform[e]),p(e)&&(n=M(e,n,i.$vm))}),n(r)}function M(e,t,n){return function(i){return e.call(n,i,t)}}function I(e,t,n){var i,r=ve(t),o=g(t);C(t,function(t,s){i=m(t)||ve(t),n&&(s=n+\"[\"+(o||i?s:\"\")+\"]\"),!n&&r?e.add(t.name,t.value):i?I(e,t,s):e.add(s,t)})}function j(e){return new r(function(t){var n=new XDomainRequest,i=function(i){var r=i.type,o=0;\"load\"===r?o=200:\"error\"===r&&(o=500),t(e.respondWith(n.responseText,{status:o}))};e.abort=function(){return n.abort()},n.open(e.method,e.getUrl()),e.timeout&&(n.timeout=e.timeout),n.onload=i,n.onabort=i,n.onerror=i,n.ontimeout=i,n.onprogress=function(){},n.send(e.getBody())})}function N(e){if(ge){var t=P.parse(location.href),n=P.parse(e.getUrl());n.protocol===t.protocol&&n.host===t.host||(e.crossOrigin=!0,e.emulateHTTP=!1,be||(e.client=j))}}function H(e){y(e.body)?e.headers.delete(\"Content-Type\"):m(e.body)&&e.emulateJSON&&(e.body=P.params(e.body),e.headers.set(\"Content-Type\",\"application/x-www-form-urlencoded\"))}function V(e){var t=e.headers.get(\"Content-Type\")||\"\";return m(e.body)&&0===t.indexOf(\"application/json\")&&(e.body=JSON.stringify(e.body)),function(e){return e.bodyText?b(e.text(),function(t){if(0===(e.headers.get(\"Content-Type\")||\"\").indexOf(\"application/json\")||W(t))try{e.body=JSON.parse(t)}catch(t){e.body=null}else e.body=t;return e}):e}}function W(e){var t=e.match(/^\\s*(\\[|\\{)/),n={\"[\":/]\\s*$/,\"{\":/}\\s*$/};return t&&n[t[1]].test(e)}function z(e){return new r(function(t){var n,i,r=e.jsonp||\"callback\",o=e.jsonpCallback||\"_jsonp\"+Math.random().toString(36).substr(2),s=null;n=function(n){var r=n.type,a=0;\"load\"===r&&null!==s?a=200:\"error\"===r&&(a=500),a&&window[o]&&(delete window[o],document.body.removeChild(i)),t(e.respondWith(s,{status:a}))},window[o]=function(e){s=JSON.stringify(e)},e.abort=function(){n({type:\"abort\"})},e.params[r]=o,e.timeout&&setTimeout(e.abort,e.timeout),i=document.createElement(\"script\"),i.src=e.getUrl(),i.type=\"text/javascript\",i.async=!0,i.onload=n,i.onerror=n,document.body.appendChild(i)})}function U(e){\"JSONP\"==e.method&&(e.client=z)}function K(e){p(e.before)&&e.before.call(this,e)}function q(e){e.emulateHTTP&&/^(PUT|PATCH|DELETE)$/i.test(e.method)&&(e.headers.set(\"X-HTTP-Method-Override\",e.method),e.method=\"POST\")}function G(e){C(ye({},ie.headers.common,e.crossOrigin?{}:ie.headers.custom,ie.headers[h(e.method)]),function(t,n){e.headers.has(n)||e.headers.set(n,t)})}function J(e){return new r(function(t){var n=new XMLHttpRequest,i=function(i){var r=e.respondWith(\"response\"in n?n.response:n.responseText,{status:1223===n.status?204:n.status,statusText:1223===n.status?\"No Content\":c(n.statusText)});C(c(n.getAllResponseHeaders()).split(\"\\n\"),function(e){r.headers.append(e.slice(0,e.indexOf(\":\")),e.slice(e.indexOf(\":\")+1))}),t(r)};e.abort=function(){return n.abort()},n.open(e.method,e.getUrl(),!0),e.timeout&&(n.timeout=e.timeout),e.responseType&&\"responseType\"in n&&(n.responseType=e.responseType),(e.withCredentials||e.credentials)&&(n.withCredentials=!0),e.crossOrigin||e.headers.set(\"X-Requested-With\",\"XMLHttpRequest\"),p(e.progress)&&\"GET\"===e.method&&n.addEventListener(\"progress\",e.progress),p(e.downloadProgress)&&n.addEventListener(\"progress\",e.downloadProgress),p(e.progress)&&/^(POST|PUT)$/i.test(e.method)&&n.upload.addEventListener(\"progress\",e.progress),p(e.uploadProgress)&&n.upload&&n.upload.addEventListener(\"progress\",e.uploadProgress),e.headers.forEach(function(e,t){n.setRequestHeader(t,e)}),n.onload=i,n.onabort=i,n.onerror=i,n.ontimeout=i,n.send(e.getBody())})}function Q(e){var t=n(0);return new r(function(n){var i,r=e.getUrl(),o=e.getBody(),s=e.method,a={};e.headers.forEach(function(e,t){a[t]=e}),t(r,{body:o,method:s,headers:a}).then(i=function(t){var i=e.respondWith(t.body,{status:t.statusCode,statusText:c(t.statusMessage)});C(t.headers,function(e,t){i.headers.set(t,e)}),n(i)},function(e){return i(e.response)})})}function Y(e){function t(t){for(;n.length;){var o=n.pop();if(p(o)){var a=void 0,l=void 0;if(a=o.call(e,t,function(e){return l=e})||l,m(a))return new r(function(t,n){i.forEach(function(t){a=b(a,function(n){return t.call(e,n)||n},n)}),b(a,t,n)},e);p(a)&&i.unshift(a)}else s(\"Invalid interceptor of type \"+typeof o+\", must be a function\")}}var n=[X],i=[];return m(e)||(e=null),t.use=function(e){n.push(e)},t}function X(e){return(e.client||(ge?J:Q))(e)}function Z(e,t){return Object.keys(e).reduce(function(e,n){return h(t)===h(n)?n:e},null)}function ee(e){if(/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError(\"Invalid character in header field name\");return c(e)}function te(e){return new r(function(t){var n=new FileReader;n.readAsText(e),n.onload=function(){t(n.result)}})}function ne(e){return 0===e.type.indexOf(\"text\")||-1!==e.type.indexOf(\"json\")}function ie(e){var t=this||{},n=Y(t.$vm);return E(e||{},t.$options,ie.options),ie.interceptors.forEach(function(e){f(e)&&(e=ie.interceptor[e]),p(e)&&n.use(e)}),n(new Ae(e)).then(function(e){return e.ok?e:r.reject(e)},function(e){return e instanceof Error&&a(e),r.reject(e)})}function re(e,t,n,i){var r=this||{},o={};return n=ye({},re.actions,n),C(n,function(n,s){n=A({url:e,params:ye({},t)},i,n),o[s]=function(){return(r.$http||ie)(oe(n,arguments))}}),o}function oe(e,t){var n,i=ye({},e),r={};switch(t.length){case 2:r=t[0],n=t[1];break;case 1:/^(POST|PUT|PATCH)$/i.test(i.method)?n=t[0]:r=t[0];break;case 0:break;default:throw\"Expected up to 2 arguments [params, body], got \"+t.length+\" arguments\"}return i.body=n,i.params=ye({},i.params,r),i}function se(e){se.installed||(o(e),e.url=P,e.http=ie,e.resource=re,e.Promise=r,Object.defineProperties(e.prototype,{$url:{get:function(){return w(e.url,this,this.$options.url)}},$http:{get:function(){return w(e.http,this,this.$options.http)}},$resource:{get:function(){return e.resource.bind(this)}},$promise:{get:function(){var t=this;return function(n){return new e.Promise(n,t)}}}}))}/*!\n * vue-resource v1.5.0\n * https://github.com/pagekit/vue-resource\n * Released under the MIT License.\n */\nvar ae=2;i.reject=function(e){return new i(function(t,n){n(e)})},i.resolve=function(e){return new i(function(t,n){t(e)})},i.all=function(e){return new i(function(t,n){var r=0,o=[];0===e.length&&t(o);for(var s=0;s<e.length;s+=1)i.resolve(e[s]).then(function(n){return function(i){o[n]=i,(r+=1)===e.length&&t(o)}}(s),n)})},i.race=function(e){return new i(function(t,n){for(var r=0;r<e.length;r+=1)i.resolve(e[r]).then(t,n)})};var le=i.prototype;le.resolve=function(e){var t=this;if(t.state===ae){if(e===t)throw new TypeError(\"Promise settled with itself.\");var n=!1;try{var i=e&&e.then;if(null!==e&&\"object\"==typeof e&&\"function\"==typeof i)return void i.call(e,function(e){n||t.resolve(e),n=!0},function(e){n||t.reject(e),n=!0})}catch(e){return void(n||t.reject(e))}t.state=0,t.value=e,t.notify()}},le.reject=function(e){var t=this;if(t.state===ae){if(e===t)throw new TypeError(\"Promise settled with itself.\");t.state=1,t.value=e,t.notify()}},le.notify=function(){var e=this;l(function(){if(e.state!==ae)for(;e.deferred.length;){var t=e.deferred.shift(),n=t[0],i=t[1],r=t[2],o=t[3];try{0===e.state?r(\"function\"==typeof n?n.call(void 0,e.value):e.value):1===e.state&&(\"function\"==typeof i?r(i.call(void 0,e.value)):o(e.value))}catch(e){o(e)}}})},le.then=function(e,t){var n=this;return new i(function(i,r){n.deferred.push([e,t,i,r]),n.notify()})},le.catch=function(e){return this.then(void 0,e)},\"undefined\"==typeof Promise&&(window.Promise=i),r.all=function(e,t){return new r(Promise.all(e),t)},r.resolve=function(e,t){return new r(Promise.resolve(e),t)},r.reject=function(e,t){return new r(Promise.reject(e),t)},r.race=function(e,t){return new r(Promise.race(e),t)};var ce=r.prototype;ce.bind=function(e){return this.context=e,this},ce.then=function(e,t){return e&&e.bind&&this.context&&(e=e.bind(this.context)),t&&t.bind&&this.context&&(t=t.bind(this.context)),new r(this.promise.then(e,t),this.context)},ce.catch=function(e){return e&&e.bind&&this.context&&(e=e.bind(this.context)),new r(this.promise.catch(e),this.context)},ce.finally=function(e){return this.then(function(t){return e.call(this),t},function(t){return e.call(this),Promise.reject(t)})};var ue,he={},de=he.hasOwnProperty,fe=[],pe=fe.slice,me=!1,ge=\"undefined\"!=typeof window,ve=Array.isArray,ye=Object.assign||x;P.options={url:\"\",root:null,params:{}},P.transform={template:R,query:$,root:S},P.transforms=[\"template\",\"query\",\"root\"],P.params=function(e){var t=[],n=encodeURIComponent;return t.add=function(e,t){p(t)&&(t=t()),null===t&&(t=\"\"),this.push(n(e)+\"=\"+n(t))},I(t,e),t.join(\"&\").replace(/%20/g,\"+\")},P.parse=function(e){var t=document.createElement(\"a\");return document.documentMode&&(t.href=e,e=t.href),t.href=e,{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,\"\"):\"\",port:t.port,host:t.host,hostname:t.hostname,pathname:\"/\"===t.pathname.charAt(0)?t.pathname:\"/\"+t.pathname,search:t.search?t.search.replace(/^\\?/,\"\"):\"\",hash:t.hash?t.hash.replace(/^#/,\"\"):\"\"}};var be=ge&&\"withCredentials\"in new XMLHttpRequest,we=function(e){var t=this;this.map={},C(e,function(e,n){return t.append(n,e)})};we.prototype.has=function(e){return null!==Z(this.map,e)},we.prototype.get=function(e){var t=this.map[Z(this.map,e)];return t?t.join():null},we.prototype.getAll=function(e){return this.map[Z(this.map,e)]||[]},we.prototype.set=function(e,t){this.map[ee(Z(this.map,e)||e)]=[c(t)]},we.prototype.append=function(e,t){var n=this.map[Z(this.map,e)];n?n.push(c(t)):this.set(e,t)},we.prototype.delete=function(e){delete this.map[Z(this.map,e)]},we.prototype.deleteAll=function(){this.map={}},we.prototype.forEach=function(e,t){var n=this;C(this.map,function(i,r){C(i,function(i){return e.call(t,i,r,n)})})};var Ce=function(e,t){var n=t.url,i=t.headers,r=t.status,o=t.statusText;this.url=n,this.ok=r>=200&&r<300,this.status=r||0,this.statusText=o||\"\",this.headers=new we(i),this.body=e,f(e)?this.bodyText=e:v(e)&&(this.bodyBlob=e,ne(e)&&(this.bodyText=te(e)))};Ce.prototype.blob=function(){return b(this.bodyBlob)},Ce.prototype.text=function(){return b(this.bodyText)},Ce.prototype.json=function(){return b(this.text(),function(e){return JSON.parse(e)})},Object.defineProperty(Ce.prototype,\"data\",{get:function(){return this.body},set:function(e){this.body=e}});var Ae=function(e){this.body=null,this.params={},ye(this,e,{method:d(e.method||\"GET\")}),this.headers instanceof we||(this.headers=new we(this.headers))};Ae.prototype.getUrl=function(){return P(this)},Ae.prototype.getBody=function(){return this.body},Ae.prototype.respondWith=function(e,t){return new Ce(e,ye(t||{},{url:this.getUrl()}))};var Ee={Accept:\"application/json, text/plain, */*\"},xe={\"Content-Type\":\"application/json;charset=utf-8\"};ie.options={},ie.headers={put:xe,post:xe,patch:xe,delete:xe,common:Ee,custom:{}},ie.interceptor={before:K,method:q,jsonp:U,json:V,form:H,header:G,cors:N},ie.interceptors=[\"before\",\"method\",\"jsonp\",\"json\",\"form\",\"header\",\"cors\"],[\"get\",\"delete\",\"head\",\"jsonp\"].forEach(function(e){ie[e]=function(t,n){return this(ye(n||{},{url:t,method:e}))}}),[\"post\",\"put\",\"patch\"].forEach(function(e){ie[e]=function(t,n,i){return this(ye(i||{},{url:t,method:e,body:n}))}}),re.actions={get:{method:\"GET\"},save:{method:\"POST\"},query:{method:\"GET\"},update:{method:\"PUT\"},remove:{method:\"DELETE\"},delete:{method:\"DELETE\"}},\"undefined\"!=typeof window&&window.Vue&&window.Vue.use(se),t.a=se},\"84LI\":function(e,t,n){\"use strict\";var i=n(\"Rakl\"),r=n(\"7C8l\"),o=n(\"DwR0\");t.a={mixins:[o.a],render:function(e){return e(\"div\",{class:[\"d-none\"],style:{display:\"none\"},attrs:{\"aria-hidden\":!0}},[e(\"div\",{ref:\"title\"},this.$slots.title),e(\"div\",{ref:\"content\"},this.$slots.default)])},data:function(){return{}},props:{title:{type:String,default:\"\"},content:{type:String,default:\"\"},triggers:{type:[String,Array],default:\"click\"},placement:{type:String,default:\"right\"}},methods:{createToolpop:function(){var e=this.getTarget();return e?this._toolpop=new i.a(e,this.getConfig(),this.$root):(this._toolpop=null,n.i(r.a)(\"b-popover: 'target' element not found!\")),this._toolpop}}}},\"8LYl\":function(e,t,n){\"use strict\";e.exports=function(e){var t=e._opts.defaultMeta,n=\"string\"==typeof t?{$ref:t}:e.getSchema(\"http://json-schema.org/draft-06/schema\")?{$ref:\"http://json-schema.org/draft-06/schema\"}:{};e.addKeyword(\"patternGroups\",{metaSchema:{type:\"object\",additionalProperties:{type:\"object\",required:[\"schema\"],properties:{maximum:{type:\"integer\",minimum:0},minimum:{type:\"integer\",minimum:0},schema:n},additionalProperties:!1}}}),e.RULES.all.properties.implements.push(\"patternGroups\")}},\"8mh2\":function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={tag:{type:String,default:\"div\"}};t.a={props:r,functional:!0,render:function(e,t){var r=t.props,o=t.data,s=t.children;return e(r.tag,n.i(i.a)(o,{staticClass:\"input-group-text\"}),s)}}},\"91JP\":function(e,t,n){\"use strict\";function i(e,t,n){var o=this._refs[n];if(\"string\"==typeof o){if(!this._refs[o])return i.call(this,e,t,o);o=this._refs[o]}if((o=o||this._schemas[n])instanceof y)return a(o.schema,this._opts.inlineRefs)?o.schema:o.validate||this._compile(o);var s,l,c,u=r.call(this,t,n);return u&&(s=u.schema,t=u.root,c=u.baseId),s instanceof y?l=s.validate||e.call(this,s.schema,t,void 0,c):void 0!==s&&(l=a(s,this._opts.inlineRefs)?s:e.call(this,s,t,void 0,c)),l}function r(e,t){var n=m.parse(t,!1,!0),i=h(n),r=u(this._getId(e.schema));if(i!==r){var a=d(i),l=this._refs[a];if(\"string\"==typeof l)return o.call(this,e,l,n);if(l instanceof y)l.validate||this._compile(l),e=l;else{if(!((l=this._schemas[a])instanceof y))return;if(l.validate||this._compile(l),a==d(t))return{schema:l,root:e,baseId:r};e=l}if(!e.schema)return;r=u(this._getId(e.schema))}return s.call(this,n,r,e.schema,e)}function o(e,t,n){var i=r.call(this,e,t);if(i){var o=i.schema,a=i.baseId;e=i.root;var l=this._getId(o);return l&&(a=f(a,l)),s.call(this,n,a,o,e)}}function s(e,t,n,i){if(e.hash=e.hash||\"\",\"#/\"==e.hash.slice(0,2)){for(var o=e.hash.split(\"/\"),s=1;s<o.length;s++){var a=o[s];if(a){if(a=v.unescapeFragment(a),void 0===(n=n[a]))break;var l;if(!w[a]&&(l=this._getId(n),l&&(t=f(t,l)),n.$ref)){var c=f(t,n.$ref),u=r.call(this,i,c);u&&(n=u.schema,i=u.root,t=u.baseId)}}}return void 0!==n&&n!==i.schema?{schema:n,root:i,baseId:t}:void 0}}function a(e,t){return!1!==t&&(void 0===t||!0===t?l(e):t?c(e)<=t:void 0)}function l(e){var t;if(Array.isArray(e)){for(var n=0;n<e.length;n++)if(\"object\"==typeof(t=e[n])&&!l(t))return!1}else for(var i in e){if(\"$ref\"==i)return!1;if(\"object\"==typeof(t=e[i])&&!l(t))return!1}return!0}function c(e){var t,n=0;if(Array.isArray(e)){for(var i=0;i<e.length;i++)if(t=e[i],\"object\"==typeof t&&(n+=c(t)),n==1/0)return 1/0}else for(var r in e){if(\"$ref\"==r)return 1/0;if(C[r])n++;else if(t=e[r],\"object\"==typeof t&&(n+=c(t)+1),n==1/0)return 1/0}return n}function u(e,t){return!1!==t&&(e=d(e)),h(m.parse(e,!1,!0))}function h(e){var t=e.protocol||\"//\"==e.href.slice(0,2)?\"//\":\"\";return(e.protocol||\"\")+t+(e.host||\"\")+(e.path||\"\")+\"#\"}function d(e){return e?e.replace(A,\"\"):\"\"}function f(e,t){return t=d(t),m.resolve(e,t)}function p(e){var t=d(this._getId(e)),n={\"\":t},i={\"\":u(t,!1)},r={},o=this;return b(e,{allKeys:!0},function(e,t,s,a,l,c,u){if(\"\"!==t){var h=o._getId(e),f=n[a],p=i[a]+\"/\"+l;if(void 0!==u&&(p+=\"/\"+(\"number\"==typeof u?u:v.escapeFragment(u))),\"string\"==typeof h){h=f=d(f?m.resolve(f,h):h);var y=o._refs[h];if(\"string\"==typeof y&&(y=o._refs[y]),y&&y.schema){if(!g(e,y.schema))throw new Error('id \"'+h+'\" resolves to more than one schema')}else if(h!=d(p))if(\"#\"==h[0]){if(r[h]&&!g(e,r[h]))throw new Error('id \"'+h+'\" resolves to more than one schema');r[h]=e}else o._refs[h]=p}n[t]=f,i[t]=p}}),r}var m=n(\"UZ5h\"),g=n(\"s6Sk\"),v=n(\"AM9w\"),y=n(\"xmlx\"),b=n(\"04Eq\");e.exports=i,i.normalizeId=d,i.fullPath=u,i.url=f,i.ids=p,i.inlineRef=a,i.schema=r;var w=v.toHash([\"properties\",\"patternProperties\",\"enum\",\"dependencies\",\"definitions\"]),C=v.toHash([\"type\",\"format\",\"pattern\",\"maxLength\",\"minLength\",\"maxProperties\",\"minProperties\",\"maxItems\",\"minItems\",\"maximum\",\"minimum\",\"uniqueItems\",\"multipleOf\",\"required\",\"enum\"]),A=/#\\/?$/},A3jq:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),h=\"valid\"+r,d=e.opts.$data&&s&&s.$data;d&&(i+=\" var schema\"+r+\" = \"+e.util.getData(s.$data,o,e.dataPathArr)+\"; \"),d||(i+=\" var schema\"+r+\" = validate.schema\"+a+\";\"),i+=\"var \"+h+\" = equal(\"+u+\", schema\"+r+\"); if (!\"+h+\") {   \";var f=f||[];f.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'const' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: {} \",!1!==e.opts.messages&&(i+=\" , message: 'should be equal to constant' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var p=i;return i=f.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+p+\"]); \":i+=\" validate.errors = [\"+p+\"]; return false; \":i+=\" var err = \"+p+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",i+=\" }\",c&&(i+=\" else { \"),i}},AFT4:function(e,t,n){\"use strict\";function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function r(e){return\"__BV_\"+e+\"_\"+w+++\"__\"}var o=n(\"Zgw8\"),s=n(\"5mWU\"),a=n(\"/CDJ\"),l=n(\"GnGf\"),c=n(\"Kz7p\"),u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},h=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),d=new RegExp(\"\\\\bbs-tooltip\\\\S+\",\"g\"),f={AUTO:\"auto\",TOP:\"top\",RIGHT:\"right\",BOTTOM:\"bottom\",LEFT:\"left\",TOPLEFT:\"top\",TOPRIGHT:\"top\",RIGHTTOP:\"right\",RIGHTBOTTOM:\"right\",BOTTOMLEFT:\"bottom\",BOTTOMRIGHT:\"bottom\",LEFTTOP:\"left\",LEFTBOTTOM:\"left\"},p={AUTO:0,TOPLEFT:-1,TOP:0,TOPRIGHT:1,RIGHTTOP:-1,RIGHT:0,RIGHTBOTTOM:1,BOTTOMLEFT:-1,BOTTOM:0,BOTTOMRIGHT:1,LEFTTOP:-1,LEFT:0,LEFTBOTTOM:1},m={SHOW:\"show\",OUT:\"out\"},g={FADE:\"fade\",SHOW:\"show\"},v={TOOLTIP:\".tooltip\",TOOLTIP_INNER:\".tooltip-inner\",ARROW:\".arrow\"},y={animation:!0,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",title:\"\",delay:0,html:!1,placement:\"top\",offset:0,arrowPadding:6,container:!1,fallbackPlacement:\"flip\",callbacks:{},boundary:\"scrollParent\"},b={WebkitTransition:[\"webkitTransitionEnd\"],MozTransition:[\"transitionend\"],OTransition:[\"otransitionend\",\"oTransitionEnd\"],transition:[\"transitionend\"]},w=1,C=function(){function e(t,n,o){i(this,e),this.$isEnabled=!0,this.$fadeTimeout=null,this.$hoverTimeout=null,this.$visibleInterval=null,this.$hoverState=\"\",this.$activeTrigger={},this.$popper=null,this.$element=t,this.$tip=null,this.$id=r(this.constructor.NAME),this.$root=o||null,this.$routeWatcher=null,this.$forceHide=this.forceHide.bind(this),this.$doHide=this.doHide.bind(this),this.$doShow=this.doShow.bind(this),this.$doDisable=this.doDisable.bind(this),this.$doEnable=this.doEnable.bind(this),this.updateConfig(n)}return h(e,[{key:\"updateConfig\",value:function(e){var t=n.i(a.a)({},this.constructor.Default,e);e.delay&&\"number\"==typeof e.delay&&(t.delay={show:e.delay,hide:e.delay}),e.title&&\"number\"==typeof e.title&&(t.title=e.title.toString()),e.content&&\"number\"==typeof e.content&&(t.content=e.content.toString()),this.fixTitle(),this.$config=t,this.unListen(),this.listen()}},{key:\"destroy\",value:function(){this.unListen(),this.setWhileOpenListeners(!1),clearTimeout(this.$hoverTimeout),this.$hoverTimeout=null,clearTimeout(this.$fadeTimeout),this.$fadeTimeout=null,this.$popper&&this.$popper.destroy(),this.$popper=null,this.$tip&&this.$tip.parentElement&&this.$tip.parentElement.removeChild(this.$tip),this.$tip=null,this.$id=null,this.$isEnabled=null,this.$root=null,this.$element=null,this.$config=null,this.$hoverState=null,this.$activeTrigger=null,this.$forceHide=null,this.$doHide=null,this.$doShow=null,this.$doDisable=null,this.$doEnable=null}},{key:\"enable\",value:function(){var e=new s.a(\"enabled\",{cancelable:!1,target:this.$element,relatedTarget:null});this.$isEnabled=!0,this.emitEvent(e)}},{key:\"disable\",value:function(){var e=new s.a(\"disabled\",{cancelable:!1,target:this.$element,relatedTarget:null});this.$isEnabled=!1,this.emitEvent(e)}},{key:\"toggle\",value:function(e){this.$isEnabled&&(e?(this.$activeTrigger.click=!this.$activeTrigger.click,this.isWithActiveTrigger()?this.enter(null):this.leave(null)):n.i(c.e)(this.getTipElement(),g.SHOW)?this.leave(null):this.enter(null))}},{key:\"show\",value:function(){var e=this;if(document.body.contains(this.$element)&&n.i(c.f)(this.$element)){var t=this.getTipElement();if(this.fixTitle(),this.setContent(t),!this.isWithContent(t))return void(this.$tip=null);n.i(c.g)(t,\"id\",this.$id),this.addAriaDescribedby(),this.$config.animation?n.i(c.b)(t,g.FADE):n.i(c.c)(t,g.FADE);var i=this.getPlacement(),r=this.constructor.getAttachment(i);this.addAttachmentClass(r);var a=new s.a(\"show\",{cancelable:!0,target:this.$element,relatedTarget:t});if(this.emitEvent(a),a.defaultPrevented)return void(this.$tip=null);var l=this.getContainer();document.body.contains(t)||l.appendChild(t),this.removePopper(),this.$popper=new o.a(this.$element,t,this.getPopperConfig(i,t));var u=function(){e.$config.animation&&e.fixTransition(t);var n=e.$hoverState;e.$hoverState=null,n===m.OUT&&e.leave(null);var i=new s.a(\"shown\",{cancelable:!1,target:e.$element,relatedTarget:t});e.emitEvent(i)};this.setWhileOpenListeners(!0),n.i(c.b)(t,g.SHOW),this.transitionOnce(t,u)}}},{key:\"visibleCheck\",value:function(e){var t=this;clearInterval(this.$visibleInterval),this.$visibleInterval=null,e&&(this.$visibleInterval=setInterval(function(){var e=t.getTipElement();e&&!n.i(c.f)(t.$element)&&n.i(c.e)(e,g.SHOW)&&t.forceHide()},100))}},{key:\"setWhileOpenListeners\",value:function(e){this.setModalListener(e),this.visibleCheck(e),this.setRouteWatcher(e),this.setOnTouchStartListener(e),e&&/(focus|blur)/.test(this.$config.trigger)?n.i(c.h)(this.$tip,\"focusout\",this):n.i(c.i)(this.$tip,\"focusout\",this)}},{key:\"forceHide\",value:function(){this.$tip&&n.i(c.e)(this.$tip,g.SHOW)&&(this.setWhileOpenListeners(!1),clearTimeout(this.$hoverTimeout),this.$hoverTimeout=null,this.$hoverState=\"\",this.hide(null,!0))}},{key:\"hide\",value:function(e,t){var i=this,r=this.$tip;if(r){var o=new s.a(\"hide\",{cancelable:!t,target:this.$element,relatedTarget:r});if(this.emitEvent(o),!o.defaultPrevented){var a=function(){i.$hoverState!==m.SHOW&&r.parentNode&&(r.parentNode.removeChild(r),i.removeAriaDescribedby(),i.removePopper(),i.$tip=null),e&&e();var t=new s.a(\"hidden\",{cancelable:!1,target:i.$element,relatedTarget:null});i.emitEvent(t)};this.setWhileOpenListeners(!1),t&&n.i(c.c)(r,g.FADE),n.i(c.c)(r,g.SHOW),this.$activeTrigger.click=!1,this.$activeTrigger.focus=!1,this.$activeTrigger.hover=!1,this.transitionOnce(r,a),this.$hoverState=\"\"}}}},{key:\"emitEvent\",value:function(e){var t=e.type;this.$root&&this.$root.$emit&&this.$root.$emit(\"bv::\"+this.constructor.NAME+\"::\"+t,e);var n=this.$config.callbacks||{};\"function\"==typeof n[t]&&n[t](e)}},{key:\"getContainer\",value:function(){var e=this.$config.container,t=document.body;return!1===e?n.i(c.j)(\".modal-content\",this.$element)||t:n.i(c.a)(e,t)||t}},{key:\"addAriaDescribedby\",value:function(){var e=n.i(c.d)(this.$element,\"aria-describedby\")||\"\";e=e.split(/\\s+/).concat(this.$id).join(\" \").trim(),n.i(c.g)(this.$element,\"aria-describedby\",e)}},{key:\"removeAriaDescribedby\",value:function(){var e=this,t=n.i(c.d)(this.$element,\"aria-describedby\")||\"\";t=t.split(/\\s+/).filter(function(t){return t!==e.$id}).join(\" \").trim(),t?n.i(c.g)(this.$element,\"aria-describedby\",t):n.i(c.k)(this.$element,\"aria-describedby\")}},{key:\"removePopper\",value:function(){this.$popper&&this.$popper.destroy(),this.$popper=null}},{key:\"transitionOnce\",value:function(e,t){var i=this,r=this.getTransitionEndEvents(),o=!1;clearTimeout(this.$fadeTimeout),this.$fadeTimeout=null;var s=function s(){o||(o=!0,clearTimeout(i.$fadeTimeout),i.$fadeTimeout=null,r.forEach(function(t){n.i(c.i)(e,t,s)}),t())};n.i(c.e)(e,g.FADE)?(r.forEach(function(t){n.i(c.h)(e,t,s)}),this.$fadeTimeout=setTimeout(s,150)):s()}},{key:\"getTransitionEndEvents\",value:function(){for(var e in b)if(void 0!==this.$element.style[e])return b[e];return[]}},{key:\"update\",value:function(){null!==this.$popper&&this.$popper.scheduleUpdate()}},{key:\"isWithContent\",value:function(e){return!!(e=e||this.$tip)&&Boolean((n.i(c.a)(v.TOOLTIP_INNER,e)||{}).innerHTML)}},{key:\"addAttachmentClass\",value:function(e){n.i(c.b)(this.getTipElement(),\"bs-tooltip-\"+e)}},{key:\"getTipElement\",value:function(){return this.$tip||(this.$tip=this.compileTemplate(this.$config.template)||this.compileTemplate(this.constructor.Default.template)),this.$tip.tabIndex=-1,this.$tip}},{key:\"compileTemplate\",value:function(e){if(!e||\"string\"!=typeof e)return null;var t=document.createElement(\"div\");t.innerHTML=e.trim();var n=t.firstElementChild?t.removeChild(t.firstElementChild):null;return t=null,n}},{key:\"setContent\",value:function(e){this.setElementContent(n.i(c.a)(v.TOOLTIP_INNER,e),this.getTitle()),n.i(c.c)(e,g.FADE),n.i(c.c)(e,g.SHOW)}},{key:\"setElementContent\",value:function(e,t){if(e){var n=this.$config.html;\"object\"===(void 0===t?\"undefined\":u(t))&&t.nodeType?n?t.parentElement!==e&&(e.innerHtml=\"\",e.appendChild(t)):e.innerText=t.innerText:e[n?\"innerHTML\":\"innerText\"]=t}}},{key:\"getTitle\",value:function(){var e=this.$config.title||\"\";return\"function\"==typeof e&&(e=e(this.$element)),\"object\"===(void 0===e?\"undefined\":u(e))&&e.nodeType&&!e.innerHTML.trim()&&(e=\"\"),\"string\"==typeof e&&(e=e.trim()),e||(e=n.i(c.d)(this.$element,\"title\")||n.i(c.d)(this.$element,\"data-original-title\")||\"\",e=e.trim()),e}},{key:\"listen\",value:function(){var e=this,t=this.$config.trigger.trim().split(/\\s+/),i=this.$element;this.setRootListener(!0),t.forEach(function(t){\"click\"===t?n.i(c.h)(i,\"click\",e):\"focus\"===t?(n.i(c.h)(i,\"focusin\",e),n.i(c.h)(i,\"focusout\",e)):\"blur\"===t?n.i(c.h)(i,\"focusout\",e):\"hover\"===t&&(n.i(c.h)(i,\"mouseenter\",e),n.i(c.h)(i,\"mouseleave\",e))},this)}},{key:\"unListen\",value:function(){var e=this;[\"click\",\"focusin\",\"focusout\",\"mouseenter\",\"mouseleave\"].forEach(function(t){n.i(c.i)(e.$element,t,e)},this),this.setRootListener(!1)}},{key:\"handleEvent\",value:function(e){if(!n.i(c.l)(this.$element)&&this.$isEnabled){var t=e.type,i=e.target,r=e.relatedTarget,o=this.$element,s=this.$tip;if(\"click\"===t)this.toggle(e);else if(\"focusin\"===t||\"mouseenter\"===t)this.enter(e);else if(\"focusout\"===t){if(s&&o&&o.contains(i)&&s.contains(r))return;if(s&&o&&s.contains(i)&&o.contains(r))return;if(s&&s.contains(i)&&s.contains(r))return;if(o&&o.contains(i)&&o.contains(r))return;this.leave(e)}else\"mouseleave\"===t&&this.leave(e)}}},{key:\"setRouteWatcher\",value:function(e){var t=this;e?(this.setRouteWatcher(!1),this.$root&&Boolean(this.$root.$route)&&(this.$routeWatcher=this.$root.$watch(\"$route\",function(e,n){e!==n&&t.forceHide()}))):this.$routeWatcher&&(this.$routeWatcher(),this.$routeWatcher=null)}},{key:\"setModalListener\",value:function(e){n.i(c.j)(\".modal-content\",this.$element)&&this.$root&&this.$root[e?\"$on\":\"$off\"](\"bv::modal::hidden\",this.$forceHide)}},{key:\"setRootListener\",value:function(e){this.$root&&(this.$root[e?\"$on\":\"$off\"](\"bv::hide::\"+this.constructor.NAME,this.$doHide),this.$root[e?\"$on\":\"$off\"](\"bv::show::\"+this.constructor.NAME,this.$doShow),this.$root[e?\"$on\":\"$off\"](\"bv::disable::\"+this.constructor.NAME,this.$doDisable),this.$root[e?\"$on\":\"$off\"](\"bv::enable::\"+this.constructor.NAME,this.$doEnable))}},{key:\"doHide\",value:function(e){e?this.$element&&this.$element.id&&this.$element.id===e&&this.hide():this.forceHide()}},{key:\"doShow\",value:function(e){e?e&&this.$element&&this.$element.id&&this.$element.id===e&&this.show():this.show()}},{key:\"doDisable\",value:function(e){e?this.$element&&this.$element.id&&this.$element.id===e&&this.disable():this.disable()}},{key:\"doEnable\",value:function(e){e?this.$element&&this.$element.id&&this.$element.id===e&&this.enable():this.enable()}},{key:\"setOnTouchStartListener\",value:function(e){var t=this;\"ontouchstart\"in document.documentElement&&n.i(l.a)(document.body.children).forEach(function(i){e?n.i(c.h)(i,\"mouseover\",t._noop):n.i(c.i)(i,\"mouseover\",t._noop)})}},{key:\"_noop\",value:function(){}},{key:\"fixTitle\",value:function(){var e=this.$element,t=u(n.i(c.d)(e,\"data-original-title\"));(n.i(c.d)(e,\"title\")||\"string\"!==t)&&(n.i(c.g)(e,\"data-original-title\",n.i(c.d)(e,\"title\")||\"\"),n.i(c.g)(e,\"title\",\"\"))}},{key:\"enter\",value:function(e){var t=this;return e&&(this.$activeTrigger[\"focusin\"===e.type?\"focus\":\"hover\"]=!0),n.i(c.e)(this.getTipElement(),g.SHOW)||this.$hoverState===m.SHOW?void(this.$hoverState=m.SHOW):(clearTimeout(this.$hoverTimeout),this.$hoverState=m.SHOW,this.$config.delay&&this.$config.delay.show?void(this.$hoverTimeout=setTimeout(function(){t.$hoverState===m.SHOW&&t.show()},this.$config.delay.show)):void this.show())}},{key:\"leave\",value:function(e){var t=this;if(e&&(this.$activeTrigger[\"focusout\"===e.type?\"focus\":\"hover\"]=!1,\"focusout\"===e.type&&/blur/.test(this.$config.trigger)&&(this.$activeTrigger.click=!1,this.$activeTrigger.hover=!1)),!this.isWithActiveTrigger()){if(clearTimeout(this.$hoverTimeout),this.$hoverState=m.OUT,!this.$config.delay||!this.$config.delay.hide)return void this.hide();this.$hoverTimeout=setTimeout(function(){t.$hoverState===m.OUT&&t.hide()},this.$config.delay.hide)}}},{key:\"getPopperConfig\",value:function(e,t){var n=this;return{placement:this.constructor.getAttachment(e),modifiers:{offset:{offset:this.getOffset(e,t)},flip:{behavior:this.$config.fallbackPlacement},arrow:{element:\".arrow\"},preventOverflow:{boundariesElement:this.$config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&n.handlePopperPlacementChange(e)},onUpdate:function(e){n.handlePopperPlacementChange(e)}}}},{key:\"getOffset\",value:function(e,t){if(!this.$config.offset){var i=n.i(c.a)(v.ARROW,t),r=parseFloat(n.i(c.m)(i).width)+parseFloat(this.$config.arrowPadding);switch(p[e.toUpperCase()]){case 1:return\"+50%p - \"+r+\"px\";case-1:return\"-50%p + \"+r+\"px\";default:return 0}}return parseFloat(this.$config.offset)}},{key:\"getPlacement\",value:function(){var e=this.$config.placement;return\"function\"==typeof e?e.call(this,this.$tip,this.$element):e}},{key:\"isWithActiveTrigger\",value:function(){for(var e in this.$activeTrigger)if(this.$activeTrigger[e])return!0;return!1}},{key:\"cleanTipClass\",value:function(){var e=this.getTipElement(),t=e.className.match(d);null!==t&&t.length>0&&t.forEach(function(t){n.i(c.c)(e,t)})}},{key:\"handlePopperPlacementChange\",value:function(e){this.cleanTipClass(),this.addAttachmentClass(this.constructor.getAttachment(e.placement))}},{key:\"fixTransition\",value:function(e){var t=this.$config.animation||!1;null===n.i(c.d)(e,\"x-placement\")&&(n.i(c.c)(e,g.FADE),this.$config.animation=!1,this.hide(),this.show(),this.$config.animation=t)}}],[{key:\"getAttachment\",value:function(e){return f[e.toUpperCase()]}},{key:\"Default\",get:function(){return y}},{key:\"NAME\",get:function(){return\"tooltip\"}}]),e}();t.a=C},AM9w:function(e,t,n){\"use strict\";function i(e,t){t=t||{};for(var n in e)t[n]=e[n];return t}function r(e,t,n){var i=n?\" !== \":\" === \",r=n?\" || \":\" && \",o=n?\"!\":\"\",s=n?\"\":\"!\";switch(e){case\"null\":return t+i+\"null\";case\"array\":return o+\"Array.isArray(\"+t+\")\";case\"object\":return\"(\"+o+t+r+\"typeof \"+t+i+'\"object\"'+r+s+\"Array.isArray(\"+t+\"))\";case\"integer\":return\"(typeof \"+t+i+'\"number\"'+r+s+\"(\"+t+\" % 1)\"+r+t+i+t+\")\";default:return\"typeof \"+t+i+'\"'+e+'\"'}}function o(e,t){switch(e.length){case 1:return r(e[0],t,!0);default:var n=\"\",i=a(e);i.array&&i.object&&(n=i.null?\"(\":\"(!\"+t+\" || \",n+=\"typeof \"+t+' !== \"object\")',delete i.null,delete i.array,delete i.object),i.number&&delete i.integer;for(var o in i)n+=(n?\" && \":\"\")+r(o,t,!0);return n}}function s(e,t){if(Array.isArray(t)){for(var n=[],i=0;i<t.length;i++){var r=t[i];F[r]?n[n.length]=r:\"array\"===e&&\"array\"===r&&(n[n.length]=r)}if(n.length)return n}else{if(F[t])return[t];if(\"array\"===e&&\"array\"===t)return[\"array\"]}}function a(e){for(var t={},n=0;n<e.length;n++)t[e[n]]=!0;return t}function l(e){return\"number\"==typeof e?\"[\"+e+\"]\":S.test(e)?\".\"+e:\"['\"+c(e)+\"']\"}function c(e){return e.replace($,\"\\\\$&\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/\\f/g,\"\\\\f\").replace(/\\t/g,\"\\\\t\")}function u(e,t){t+=\"[^0-9]\";var n=e.match(new RegExp(t,\"g\"));return n?n.length:0}function h(e,t,n){return t+=\"([^0-9])\",n=n.replace(/\\$/g,\"$$$$\"),e.replace(new RegExp(t,\"g\"),n+\"$1\")}function d(e){return e.replace(k,\"\").replace(_,\"\").replace(B,\"if (!($1))\")}function f(e,t){var n=e.match(D);return n&&2==n.length&&(e=t?e.replace(L,\"\").replace(P,M):e.replace(T,\"\").replace(O,R)),n=e.match(I),n&&3===n.length?e.replace(j,\"\"):e}function p(e,t){if(\"boolean\"==typeof e)return!e;for(var n in e)if(t[n])return!0}function m(e,t,n){if(\"boolean\"==typeof e)return!e&&\"not\"!=n;for(var i in e)if(i!=n&&t[i])return!0}function g(e){return\"'\"+c(e)+\"'\"}function v(e,t,n,i){return w(e,n?\"'/' + \"+t+(i?\"\":\".replace(/~/g, '~0').replace(/\\\\//g, '~1')\"):i?\"'[' + \"+t+\" + ']'\":\"'[\\\\'' + \"+t+\" + '\\\\']'\")}function y(e,t,n){return w(e,g(n?\"/\"+E(t):l(t)))}function b(e,t,n){var i,r,o,s;if(\"\"===e)return\"rootData\";if(\"/\"==e[0]){if(!N.test(e))throw new Error(\"Invalid JSON-pointer: \"+e);r=e,o=\"rootData\"}else{if(!(s=e.match(H)))throw new Error(\"Invalid JSON-pointer: \"+e);if(i=+s[1],\"#\"==(r=s[2])){if(i>=t)throw new Error(\"Cannot access property/index \"+i+\" levels up, current level is \"+t);return n[t-i]}if(i>t)throw new Error(\"Cannot access data \"+i+\" levels up, current level is \"+t);if(o=\"data\"+(t-i||\"\"),!r)return o}for(var a=o,c=r.split(\"/\"),u=0;u<c.length;u++){var h=c[u];h&&(o+=l(x(h)),a+=\" && \"+o)}return a}function w(e,t){return'\"\"'==e?t:(e+\" + \"+t).replace(/' \\+ '/g,\"\")}function C(e){return x(decodeURIComponent(e))}function A(e){return encodeURIComponent(E(e))}function E(e){return e.replace(/~/g,\"~0\").replace(/\\//g,\"~1\")}function x(e){return e.replace(/~1/g,\"/\").replace(/~0/g,\"~\")}e.exports={copy:i,checkDataType:r,checkDataTypes:o,coerceToTypes:s,toHash:a,getProperty:l,escapeQuotes:c,equal:n(\"s6Sk\"),ucs2length:n(\"eD/a\"),varOccurences:u,varReplace:h,cleanUpCode:d,finalCleanUpCode:f,schemaHasRules:p,schemaHasRulesExcept:m,toQuotedString:g,getPathExpr:v,getPath:y,getData:b,unescapeFragment:C,unescapeJsonPointer:x,escapeFragment:A,escapeJsonPointer:E};var F=a([\"string\",\"number\",\"integer\",\"boolean\",\"null\"]),S=/^[a-z$_][a-z$_0-9]*$/i,$=/'|\\\\/g,k=/else\\s*{\\s*}/g,_=/if\\s*\\([^)]+\\)\\s*\\{\\s*\\}(?!\\s*else)/g,B=/if\\s*\\(([^)]+)\\)\\s*\\{\\s*\\}\\s*else(?!\\s*if)/g,D=/[^v.]errors/g,T=/var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g,L=/var errors = 0;|var vErrors = null;/g,O=\"return errors === 0;\",R=\"validate.errors = null; return true;\",P=/if \\(errors === 0\\) return data;\\s*else throw new ValidationError\\(vErrors\\);/,M=\"return data;\",I=/[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g,j=/if \\(rootData === undefined\\) rootData = data;/,N=/^\\/(?:[^~]|~0|~1)*$/,H=/^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/},AgIa:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i,r,o=\" \",s=e.level,a=e.dataLevel,l=e.schema[t],c=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+\"/\"+t,h=!e.opts.allErrors,d=\"data\"+(a||\"\"),f=e.opts.$data&&l&&l.$data;f?(o+=\" var schema\"+s+\" = \"+e.util.getData(l.$data,a,e.dataPathArr)+\"; \",r=\"schema\"+s):r=l;var p=\"maxItems\"==t?\">\":\"<\";o+=\"if ( \",f&&(o+=\" (\"+r+\" !== undefined && typeof \"+r+\" != 'number') || \"),o+=\" \"+d+\".length \"+p+\" \"+r+\") { \";var i=t,m=m||[];m.push(o),o=\"\",!1!==e.createErrors?(o+=\" { keyword: '\"+(i||\"_limitItems\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(u)+\" , params: { limit: \"+r+\" } \",!1!==e.opts.messages&&(o+=\" , message: 'should NOT have \",o+=\"maxItems\"==t?\"more\":\"less\",o+=\" than \",o+=f?\"' + \"+r+\" + '\":\"\"+l,o+=\" items' \"),e.opts.verbose&&(o+=\" , schema:  \",o+=f?\"validate.schema\"+c:\"\"+l,o+=\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),o+=\" } \"):o+=\" {} \";var g=o;return o=m.pop(),!e.compositeRule&&h?e.async?o+=\" throw new ValidationError([\"+g+\"]); \":o+=\" validate.errors = [\"+g+\"]; return false; \":o+=\" var err = \"+g+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",o+=\"} \",h&&(o+=\" else { \"),o}},AyHp:function(e,t,n){\"use strict\";function i(e){return null!==e&&\"object\"===(void 0===e?\"undefined\":a(e))}function r(e,t){if(e===t)return!0;var a=i(e),l=i(t);if(!a||!l)return!a&&!l&&String(e)===String(t);try{var c=n.i(o.b)(e),u=n.i(o.b)(t);if(c&&u)return e.length===t.length&&e.every(function(e,n){return r(e,t[n])});if(c||u)return!1;var h=n.i(s.b)(e),d=n.i(s.b)(t);return h.length===d.length&&h.every(function(n){return r(e[n],t[n])})}catch(e){return!1}}var o=n(\"GnGf\"),s=n(\"/CDJ\"),a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};t.a=r},BiGh:function(e,t,n){\"use strict\";var i=n(\"OfYj\"),r=n(\"vd6y\"),o=n(\"/gqF\"),s=n(\"60E9\"),a=n(\"TMTb\"),l=n(\"dfnb\"),c=n(\"GnGf\"),u=n(\"AyHp\");t.a={mixins:[i.a,r.a,o.a,s.a,a.a,l.a],render:function(e){var t=this,i=e(\"input\",{ref:\"check\",class:[t.is_ButtonMode?\"\":t.is_Plain?\"form-check-input\":\"custom-control-input\",t.get_StateClass],directives:[{name:\"model\",rawName:\"v-model\",value:t.computedLocalChecked,expression:\"computedLocalChecked\"}],attrs:{id:t.safeId(),type:\"checkbox\",name:t.get_Name,disabled:t.is_Disabled,required:t.is_Required,autocomplete:\"off\",\"true-value\":t.value,\"false-value\":t.uncheckedValue,\"aria-required\":t.is_Required?\"true\":null},domProps:{value:t.value,checked:t.is_Checked},on:{focus:t.handleFocus,blur:t.handleFocus,change:t.emitChange,__c:function(e){var i=t.computedLocalChecked,r=e.target;if(n.i(c.b)(i)){var o=t.value,s=t._i(i,o);r.checked?s<0&&(t.computedLocalChecked=i.concat([o])):s>-1&&(t.computedLocalChecked=i.slice(0,s).concat(i.slice(s+1)))}else t.computedLocalChecked=r.checked?t.value:t.uncheckedValue}}}),r=e(t.is_ButtonMode?\"span\":\"label\",{class:t.is_ButtonMode?null:t.is_Plain?\"form-check-label\":\"custom-control-label\",attrs:{for:t.is_ButtonMode?null:t.safeId()}},[t.$slots.default]);return t.is_ButtonMode?e(\"label\",{class:[t.buttonClasses]},[i,r]):e(\"div\",{class:[t.is_Plain?\"form-check\":t.labelClasses,{\"form-check-inline\":t.is_Plain&&!t.is_Stacked},{\"custom-control-inline\":!t.is_Plain&&!t.is_Stacked}]},[i,r])},props:{value:{default:!0},uncheckedValue:{default:!1},indeterminate:{type:Boolean,default:!1}},computed:{labelClasses:function(){return[\"custom-control\",\"custom-checkbox\",this.get_Size?\"form-control-\"+this.get_Size:\"\",this.get_StateClass]},is_Checked:function(){var e=this.computedLocalChecked;if(n.i(c.b)(e)){for(var t=0;t<e.length;t++)if(n.i(u.a)(e[t],this.value))return!0;return!1}return n.i(u.a)(e,this.value)}},watch:{computedLocalChecked:function(e,t){n.i(u.a)(e,t)||(this.$emit(\"input\",e),this.$emit(\"update:indeterminate\",this.$refs.check.indeterminate))},checked:function(e,t){this.is_Child||n.i(u.a)(e,t)||(this.computedLocalChecked=e)},indeterminate:function(e,t){this.setIndeterminate(e)}},methods:{emitChange:function(e){var t=e.target.checked;this.is_Child||n.i(c.b)(this.computedLocalChecked)?(this.$emit(\"change\",t?this.value:null),this.is_Child&&this.$parent.$emit(\"change\",this.computedLocalChecked)):this.$emit(\"change\",t?this.value:this.uncheckedValue),this.$emit(\"update:indeterminate\",this.$refs.check.indeterminate)},setIndeterminate:function(e){this.is_Child||n.i(c.b)(this.computedLocalChecked)||(this.$refs.check.indeterminate=e,this.$emit(\"update:indeterminate\",this.$refs.check.indeterminate))}},mounted:function(){this.setIndeterminate(this.indeterminate)}}},C9Xq:function(e,t,n){\"use strict\";var i=n(\"34sA\");t.a={mixins:[i.a],render:function(e){var t=this;return e(\"button\",{class:[\"navbar-toggler\"],attrs:{type:\"button\",\"aria-label\":t.label,\"aria-controls\":t.target,\"aria-expanded\":t.toggleState?\"true\":\"false\"},on:{click:t.onClick}},[t.$slots.default||e(\"span\",{class:[\"navbar-toggler-icon\"]})])},data:function(){return{toggleState:!1}},props:{label:{type:String,default:\"Toggle navigation\"},target:{type:String,required:!0}},methods:{onClick:function(){this.$root.$emit(\"bv::toggle::collapse\",this.target)},handleStateEvt:function(e,t){e===this.target&&(this.toggleState=t)}},created:function(){this.listenOnRoot(\"bv::collapse::state\",this.handleStateEvt)}}},CFyO:function(e,t,n){\"use strict\";var i=n(\"7C8l\"),r=n(\"Kz7p\"),o=n(\"OfYj\"),s=n(\"TMTb\"),a=n(\"yCm2\"),l=n(\"tDPY\"),c=n(\"q32r\"),u=n(\"x7Qz\");t.a={mixins:[o.a,s.a],components:{bFormRow:a.a,bFormText:l.a,bFormInvalidFeedback:c.a,bFormValidFeedback:u.a},render:function(e){var t=this,n=t.$slots,i=e(!1);if(t.hasLabel){var r=n.label,o=t.labelFor?\"label\":\"legend\",s=r?{}:{innerHTML:t.label},a={id:t.labelId,for:t.labelFor||null},l=t.labelFor||t.labelSrOnly?{}:{click:t.legendClick};t.horizontal?t.labelSrOnly?(r=e(o,{class:[\"sr-only\"],attrs:a,domProps:s},r),i=e(\"div\",{class:t.labelLayoutClasses},[r])):i=e(o,{class:[t.labelLayoutClasses,t.labelClasses],attrs:a,domProps:s,on:l},r):i=e(o,{class:t.labelSrOnly?[\"sr-only\"]:t.labelClasses,attrs:a,domProps:s,on:l},r)}else t.horizontal&&(i=e(\"div\",{class:t.labelLayoutClasses}));var c=e(!1);if(t.hasInvalidFeedback){var u={};n[\"invalid-feedback\"]||n.feedback||(u={innerHTML:t.invalidFeedback||t.feedback||\"\"}),c=e(\"b-form-invalid-feedback\",{props:{id:t.invalidFeedbackId,forceShow:!1===t.computedState},attrs:{role:\"alert\",\"aria-live\":\"assertive\",\"aria-atomic\":\"true\"},domProps:u},n[\"invalid-feedback\"]||n.feedback)}var h=e(!1);if(t.hasValidFeedback){var d=n[\"valid-feedback\"]?{}:{innerHTML:t.validFeedback||\"\"};h=e(\"b-form-valid-feedback\",{props:{id:t.validFeedbackId,forceShow:!0===t.computedState},attrs:{role:\"alert\",\"aria-live\":\"assertive\",\"aria-atomic\":\"true\"},domProps:d},n[\"valid-feedback\"])}var f=e(!1);if(t.hasDescription){var p=n.description?{}:{innerHTML:t.description||\"\"};f=e(\"b-form-text\",{attrs:{id:t.descriptionId},domProps:p},n.description)}var m=e(\"div\",{ref:\"content\",class:t.inputLayoutClasses,attrs:t.labelFor?{}:{role:\"group\",\"aria-labelledby\":t.labelId}},[n.default,c,h,f]);return e(t.labelFor?\"div\":\"fieldset\",{class:t.groupClasses,attrs:{id:t.safeId(),disabled:t.disabled,role:\"group\",\"aria-invalid\":!1===t.computedState?\"true\":null,\"aria-labelledby\":t.labelId,\"aria-describedby\":t.labelFor?null:t.describedByIds}},t.horizontal?[e(\"b-form-row\",{},[i,m])]:[i,m])},props:{horizontal:{type:Boolean,default:!1},labelCols:{type:[Number,String],default:3,validator:function(e){return Number(e)>=1&&Number(e)<=11||(n.i(i.a)(\"b-form-group: label-cols must be a value between 1 and 11\"),!1)}},breakpoint:{type:String,default:\"sm\"},labelTextAlign:{type:String,default:null},label:{type:String,default:null},labelFor:{type:String,default:null},labelSize:{type:String,default:null},labelSrOnly:{type:Boolean,default:!1},labelClass:{type:[String,Array],default:null},description:{type:String,default:null},invalidFeedback:{type:String,default:null},feedback:{type:String,default:null},validFeedback:{type:String,default:null},validated:{type:Boolean,default:!1}},computed:{groupClasses:function(){return[\"b-form-group\",\"form-group\",this.validated?\"was-validated\":null,this.stateClass]},labelClasses:function(){return[\"col-form-label\",this.labelSize?\"col-form-label-\"+this.labelSize:null,this.labelTextAlign?\"text-\"+this.labelTextAlign:null,this.horizontal?null:\"pt-0\",this.labelClass]},labelLayoutClasses:function(){return[this.horizontal?\"col-\"+this.breakpoint+\"-\"+this.labelCols:null]},inputLayoutClasses:function(){return[this.horizontal?\"col-\"+this.breakpoint+\"-\"+(12-Number(this.labelCols)):null]},hasLabel:function(){return this.label||this.$slots.label},hasDescription:function(){return this.description||this.$slots.description},hasInvalidFeedback:function(){return!0!==this.computedState&&(this.invalidFeedback||this.feedback||this.$slots[\"invalid-feedback\"]||this.$slots.feedback)},hasValidFeedback:function(){return!1!==this.computedState&&(this.validFeedback||this.$slots[\"valid-feedback\"])},labelId:function(){return this.hasLabel?this.safeId(\"_BV_label_\"):null},descriptionId:function(){return this.hasDescription?this.safeId(\"_BV_description_\"):null},invalidFeedbackId:function(){return this.hasInvalidFeedback?this.safeId(\"_BV_feedback_invalid_\"):null},validFeedbackId:function(){return this.hasValidFeedback?this.safeId(\"_BV_feedback_valid_\"):null},describedByIds:function(){return[this.descriptionId,this.invalidFeedbackId,this.validFeedbackId].filter(function(e){return e}).join(\" \")||null}},watch:{describedByIds:function(e,t){e!==t&&this.setInputDescribedBy(e,t)}},methods:{legendClick:function(e){if(!/^(input|select|textarea|label)$/i.test(e.target?e.target.tagName:\"\")){var t=n.i(r.q)(\"input:not(:disabled),textarea:not(:disabled),select:not(:disabled)\",this.$refs.content).filter(r.f);t[0]&&t[0].focus&&t[0].focus()}},setInputDescribedBy:function(e,t){if(this.labelFor&&\"undefined\"!=typeof document){var i=n.i(r.a)(\"#\"+this.labelFor,this.$refs.content);if(i){var o=\"aria-describedby\",s=(n.i(r.d)(i,o)||\"\").split(/\\s+/);t=(t||\"\").split(/\\s+/),s=s.filter(function(e){return-1===t.indexOf(e)}).concat(e||\"\").join(\" \").trim(),s?n.i(r.g)(i,o,s):n.i(r.k)(i,o)}}}},mounted:function(){var e=this;this.$nextTick(function(){e.setInputDescribedBy(e.describedByIds)})}}},Ch1r:function(e,t,n){\"use strict\";t.a={props:{tag:{type:String,default:\"div\"},bgVariant:{type:String,default:null},borderVariant:{type:String,default:null},textVariant:{type:String,default:null}}}},D2L2:function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},DJjr:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i,r=\" \",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+\"/\"+t,u=!e.opts.allErrors,h=\"data\"+(s||\"\"),d=e.opts.$data&&a&&a.$data;d?(r+=\" var schema\"+o+\" = \"+e.util.getData(a.$data,s,e.dataPathArr)+\"; \",i=\"schema\"+o):i=a;var f=d?\"(new RegExp(\"+i+\"))\":e.usePattern(a);r+=\"if ( \",d&&(r+=\" (\"+i+\" !== undefined && typeof \"+i+\" != 'string') || \"),r+=\" !\"+f+\".test(\"+h+\") ) {   \";var p=p||[];p.push(r),r=\"\",!1!==e.createErrors?(r+=\" { keyword: 'pattern' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(c)+\" , params: { pattern:  \",r+=d?\"\"+i:\"\"+e.util.toQuotedString(a),r+=\"  } \",!1!==e.opts.messages&&(r+=\" , message: 'should match pattern \\\"\",r+=d?\"' + \"+i+\" + '\":\"\"+e.util.escapeQuotes(a),r+=\"\\\"' \"),e.opts.verbose&&(r+=\" , schema:  \",r+=d?\"validate.schema\"+l:\"\"+e.util.toQuotedString(a),r+=\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+h+\" \"),r+=\" } \"):r+=\" {} \";var m=r;return r=p.pop(),!e.compositeRule&&u?e.async?r+=\" throw new ValidationError([\"+m+\"]); \":r+=\" validate.errors = [\"+m+\"]; return false; \":r+=\" var err = \"+m+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",r+=\"} \",u&&(r+=\" else { \"),r}},DOWb:function(e,t,n){\"use strict\";var i=n(\"UqMQ\"),r=n(\"q21c\"),o={bTable:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},Dd8w:function(e,t,n){\"use strict\";t.__esModule=!0;var i=n(\"woOf\"),r=function(e){return e&&e.__esModule?e:{default:e}}(i);t.default=r.default||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}},Djfr:function(e,t,n){\"use strict\";var i=n(\"Nyfp\"),r=n(\"Ftdo\"),o=n(\"2Ysk\"),s=n(\"pk12\"),a=n(\"sgFw\"),l=n(\"mfOX\"),c=n(\"y2ie\"),u=n(\"QmdE\"),h=n(\"k5uS\"),d=n(\"+LpG\").translate,f=n(\"+LpG\").setLanguages,p=n(\"+LpG\").setLanguage,m={};m.create=function(e,t){if(!e)throw new Error(\"No container element provided.\");this.container=e,this.dom={},this.highlighter=new i,this.selection=void 0,this.multiselection={nodes:[]},this.validateSchema=null,this.errorNodes=[],this.node=null,this.focusTarget=null,this._setOptions(t),t.autocomplete&&(this.autocomplete=new h(t.autocomplete)),this.options.history&&\"view\"!==this.options.mode&&(this.history=new r(this)),this._createFrame(),this._createTable()},m.destroy=function(){this.frame&&this.container&&this.frame.parentNode==this.container&&(this.container.removeChild(this.frame),this.frame=null),this.container=null,this.dom=null,this.clear(),this.node=null,this.focusTarget=null,this.selection=null,this.multiselection=null,this.errorNodes=null,this.validateSchema=null,this._debouncedValidate=null,this.history&&(this.history.destroy(),this.history=null),this.searchBox&&(this.searchBox.destroy(),this.searchBox=null),this.modeSwitcher&&(this.modeSwitcher.destroy(),this.modeSwitcher=null)},m._setOptions=function(e){if(this.options={search:!0,history:!0,mode:\"tree\",name:void 0,schema:null,schemaRefs:null,autocomplete:null,navigationBar:!0},e)for(var t in e)e.hasOwnProperty(t)&&(this.options[t]=e[t]);this.setSchema(this.options.schema,this.options.schemaRefs),this._debouncedValidate=u.debounce(this.validate.bind(this),this.DEBOUNCE_INTERVAL),f(this.options.languages),p(this.options.language)},m.set=function(e,t){if(t&&(console.warn('Second parameter \"name\" is deprecated. Use setName(name) instead.'),this.options.name=t),e instanceof Function||void 0===e)this.clear();else{this.content.removeChild(this.table);var n={field:this.options.name,value:e},i=new l(this,n);this._setRoot(i),this.validate();this.node.expand(!1),this.content.appendChild(this.table)}this.history&&this.history.clear(),this.searchBox&&this.searchBox.clear()},m.get=function(){if(this.focusTarget){var e=l.getNodeFromTarget(this.focusTarget);e&&e.blur()}return this.node?this.node.getValue():void 0},m.getText=function(){return JSON.stringify(this.get())},m.setText=function(e){try{this.set(u.parse(e))}catch(n){var t=u.sanitize(e);this.set(u.parse(t))}},m.setName=function(e){this.options.name=e,this.node&&this.node.updateField(this.options.name)},m.getName=function(){return this.options.name},m.focus=function(){var e=this.content.querySelector(\"[contenteditable=true]\");e?e.focus():this.node.dom.expand?this.node.dom.expand.focus():this.node.dom.menu?this.node.dom.menu.focus():(e=this.frame.querySelector(\"button\"))&&e.focus()},m.clear=function(){this.node&&(this.node.collapse(),this.tbody.removeChild(this.node.getDom()),delete this.node)},m._setRoot=function(e){this.clear(),this.node=e,this.tbody.appendChild(e.getDom())},m.search=function(e){var t;return this.node?(this.content.removeChild(this.table),t=this.node.search(e),this.content.appendChild(this.table)):t=[],t},m.expandAll=function(){this.node&&(this.content.removeChild(this.table),this.node.expand(),this.content.appendChild(this.table))},m.collapseAll=function(){this.node&&(this.content.removeChild(this.table),this.node.collapse(),this.content.appendChild(this.table))},m._onAction=function(e,t){this.history&&this.history.add(e,t),this._onChange()},m._onChange=function(){if(this._debouncedValidate(),this.options.onChange)try{this.options.onChange()}catch(e){console.error(\"Error in onChange callback: \",e)}},m.validate=function(){this.errorNodes&&this.errorNodes.forEach(function(e){e.setError(null)});var e=this.node;if(e){var t=e.validate(),n=[];if(this.validateSchema){this.validateSchema(e.getValue())||(n=this.validateSchema.errors.map(function(e){return u.improveSchemaError(e)}).map(function(t){return{node:e.findNode(t.dataPath),error:t}}).filter(function(e){return null!=e.node}))}var i=t.concat(n),r=i.reduce(function(e,t){return t.node.findParents().filter(function(t){return!e.some(function(e){return e[0]===t})}).map(function(e){return[e,t.node]}).concat(e)},[]);this.errorNodes=r.map(function(e){return{node:e[0],child:e[1],error:{message:\"object\"===e[0].type?\"Contains invalid properties\":\"Contains invalid items\"}}}).concat(i).map(function(e){return e.node.setError(e.error,e.child),e.node})}},m.refresh=function(){this.node&&this.node.updateDom({recurse:!0})},m.startAutoScroll=function(e){var t=this,n=this.content,i=u.getAbsoluteTop(n),r=n.clientHeight,o=i+r;e<i+24&&n.scrollTop>0?this.autoScrollStep=(i+24-e)/3:e>o-24&&r+n.scrollTop<n.scrollHeight?this.autoScrollStep=(o-24-e)/3:this.autoScrollStep=void 0,this.autoScrollStep?this.autoScrollTimer||(this.autoScrollTimer=setInterval(function(){t.autoScrollStep?n.scrollTop-=t.autoScrollStep:t.stopAutoScroll()},50)):this.stopAutoScroll()},m.stopAutoScroll=function(){this.autoScrollTimer&&(clearTimeout(this.autoScrollTimer),delete this.autoScrollTimer),this.autoScrollStep&&delete this.autoScrollStep},m.setSelection=function(e){e&&(\"scrollTop\"in e&&this.content&&(this.content.scrollTop=e.scrollTop),e.nodes&&this.select(e.nodes),e.range&&u.setSelectionOffset(e.range),e.dom&&e.dom.focus())},m.getSelection=function(){var e=u.getSelectionOffset();return e&&\"DIV\"!==e.container.nodeName&&(e=null),{dom:this.focusTarget,range:e,nodes:this.multiselection.nodes.slice(0),scrollTop:this.content?this.content.scrollTop:0}},m.scrollTo=function(e,t){var n=this.content;if(n){var i=this;i.animateTimeout&&(clearTimeout(i.animateTimeout),delete i.animateTimeout),i.animateCallback&&(i.animateCallback(!1),delete i.animateCallback);var r=n.clientHeight,o=n.scrollHeight-r,s=Math.min(Math.max(e-r/4,0),o),a=function(){var e=n.scrollTop,r=s-e;Math.abs(r)>3?(n.scrollTop+=r/3,i.animateCallback=t,i.animateTimeout=setTimeout(a,50)):(t&&t(!0),n.scrollTop=s,delete i.animateTimeout,delete i.animateCallback)};a()}else t&&t(!1)},m._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement(\"div\"),this.frame.className=\"jsoneditor jsoneditor-mode-\"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var n=t.target;e(t),\"BUTTON\"==n.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,u.addEventListener(this.frame,\"focus\",e,!0),u.addEventListener(this.frame,\"blur\",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement(\"div\"),this.menu.className=\"jsoneditor-menu\",this.frame.appendChild(this.menu);var n=document.createElement(\"button\");n.type=\"button\",n.className=\"jsoneditor-expand-all\",n.title=d(\"expandAll\"),n.onclick=function(){t.expandAll()},this.menu.appendChild(n);var i=document.createElement(\"button\");if(i.type=\"button\",i.title=d(\"collapseAll\"),i.className=\"jsoneditor-collapse-all\",i.onclick=function(){t.collapseAll()},this.menu.appendChild(i),this.history){var r=document.createElement(\"button\");r.type=\"button\",r.className=\"jsoneditor-undo jsoneditor-separator\",r.title=d(\"undo\"),r.onclick=function(){t._onUndo()},this.menu.appendChild(r),this.dom.undo=r;var s=document.createElement(\"button\");s.type=\"button\",s.className=\"jsoneditor-redo\",s.title=d(\"redo\"),s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){r.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var l=this;this.modeSwitcher=new c(this.menu,this.options.modes,this.options.mode,function(e){l.modeSwitcher.destroy(),l.setMode(e),l.modeSwitcher.focus()})}this.options.search&&(this.searchBox=new o(this,this.menu)),this.options.navigationBar&&(this.navBar=document.createElement(\"div\"),this.navBar.className=\"jsoneditor-navigation-bar nav-bar-empty\",this.frame.appendChild(this.navBar),this.treePath=new a(this.navBar),this.treePath.onSectionSelected(this._onTreePathSectionSelected.bind(this)),this.treePath.onContextMenuItemSelected(this._onTreePathMenuItemSelected.bind(this)))},m._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},m._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},m._onEvent=function(e){\"keydown\"===e.type&&this._onKeyDown(e),\"focus\"===e.type&&(this.focusTarget=e.target),\"mousedown\"===e.type&&this._startDragDistance(e),\"mousemove\"!==e.type&&\"mouseup\"!==e.type&&\"click\"!==e.type||this._updateDragDistance(e);var t=l.getNodeFromTarget(e.target);if(t&&this.options&&this.options.navigationBar&&t&&(\"keydown\"===e.type||\"mousedown\"===e.type)){var n=this;setTimeout(function(){n._updateTreePath(t.getNodePath())})}if(t&&t.selected){if(\"click\"===e.type){if(e.target===t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}\"mousedown\"===e.type&&l.onDragStart(this.multiselection.nodes,e)}else\"mousedown\"===e.type&&(this.deselect(),t&&e.target===t.dom.drag?l.onDragStart(t,e):(!t||e.target!==t.dom.field&&e.target!==t.dom.value&&e.target!==t.dom.select)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},m._updateTreePath=function(e){function t(e){return void 0!==e.field?e._escapeHTML(e.field):isNaN(e.index)?e.type:e.index}if(e&&e.length){u.removeClassName(this.navBar,\"nav-bar-empty\");var n=[];e.forEach(function(e){var i={name:t(e),node:e,children:[]};e.childs&&e.childs.length&&e.childs.forEach(function(e){i.children.push({name:t(e),node:e})}),n.push(i)}),this.treePath.setPath(n)}else u.addClassName(this.navBar,\"nav-bar-empty\")},m._onTreePathSectionSelected=function(e){e&&e.node&&(e.node.expandTo(),e.node.focus())},m._onTreePathMenuItemSelected=function(e,t){if(e&&e.children.length){var n=e.children.find(function(e){return e.name===t});n&&n.node&&(this._updateTreePath(n.node.getNodePath()),n.node.expandTo(),n.node.focus())}},m._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},m._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,n=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+n*n),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},m._onMultiSelectStart=function(e){var t=l.getNodeFromTarget(e.target);if(\"tree\"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var n=this;this.mousemove||(this.mousemove=u.addEventListener(window,\"mousemove\",function(e){n._onMultiSelect(e)})),this.mouseup||(this.mouseup=u.addEventListener(window,\"mouseup\",function(e){n._onMultiSelectEnd(e)}))}},m._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=l.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var n=this.multiselection.start,i=this.multiselection.end||this.multiselection.start;n&&i&&(this.multiselection.nodes=this._findTopLevelNodes(n,i),this.select(this.multiselection.nodes))}},m._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(u.removeEventListener(window,\"mousemove\",this.mousemove),delete this.mousemove),this.mouseup&&(u.removeEventListener(window,\"mouseup\",this.mouseup),delete this.mouseup)},m.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},m.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},m._findTopLevelNodes=function(e,t){for(var n=e.getNodePath(),i=t.getNodePath(),r=0;r<n.length&&n[r]===i[r];)r++;var o=n[r-1],s=n[r],a=i[r];if(s&&a||(o.parent?(s=o,a=o,o=o.parent):(s=o.childs[0],a=o.childs[o.childs.length-1])),o&&s&&a){var l=o.childs.indexOf(s),c=o.childs.indexOf(a),u=Math.min(l,c),h=Math.max(l,c);return o.childs.slice(u,h+1)}return[]},m._onKeyDown=function(e){var t=e.which||e.keyCode,n=e.altKey,i=e.ctrlKey,r=e.metaKey,o=e.shiftKey,s=!1;if(9==t){var a=this;setTimeout(function(){u.selectContentEditable(a.focusTarget)},0)}if(this.searchBox)if(i&&70==t)this.searchBox.dom.search.focus(),this.searchBox.dom.search.select(),s=!0;else if(114==t||i&&71==t){o?this.searchBox.previous(!0):this.searchBox.next(!0),s=!0}if(this.history&&(i&&!o&&90==t?(this._onUndo(),s=!0):i&&o&&90==t&&(this._onRedo(),s=!0)),this.options.autocomplete&&!s&&!(i||n||r||1!=e.key.length&&8!=t&&46!=t)){s=!1;var c=\"\";e.target.className.indexOf(\"jsoneditor-value\")>=0&&(c=\"value\"),e.target.className.indexOf(\"jsoneditor-field\")>=0&&(c=\"field\");var h=l.getNodeFromTarget(e.target);setTimeout(function(e,t){if(t.innerText.length>0){var n=this.options.autocomplete.getOptions(t.innerText,e.getPath(),c,e.editor);null===n?this.autocomplete.hideDropDown():\"function\"==typeof n.then?n.then(function(e){null===e?this.autocomplete.hideDropDown():e.options?this.autocomplete.show(t,e.startFrom,e.options):this.autocomplete.show(t,0,e)}.bind(this)):n.options?this.autocomplete.show(t,n.startFrom,n.options):this.autocomplete.show(t,0,n)}else this.autocomplete.hideDropDown()}.bind(this,h,e.target),50)}s&&(e.preventDefault(),e.stopPropagation())},m._createTable=function(){var e=document.createElement(\"div\");e.className=\"jsoneditor-outer\",this.options.navigationBar&&u.addClassName(e,\"has-nav-bar\"),this.contentOuter=e,this.content=document.createElement(\"div\"),this.content.className=\"jsoneditor-tree\",e.appendChild(this.content),this.table=document.createElement(\"table\"),this.table.className=\"jsoneditor-tree\",this.content.appendChild(this.table);var t;this.colgroupContent=document.createElement(\"colgroup\"),\"tree\"===this.options.mode&&(t=document.createElement(\"col\"),t.width=\"24px\",this.colgroupContent.appendChild(t)),t=document.createElement(\"col\"),t.width=\"24px\",this.colgroupContent.appendChild(t),t=document.createElement(\"col\"),this.colgroupContent.appendChild(t),this.table.appendChild(this.colgroupContent),this.tbody=document.createElement(\"tbody\"),this.table.appendChild(this.tbody),this.frame.appendChild(e)},m.showContextMenu=function(e,t){var n=[],i=this;n.push({text:d(\"duplicateText\"),title:d(\"duplicateTitle\"),className:\"jsoneditor-duplicate\",click:function(){l.onDuplicate(i.multiselection.nodes)}}),n.push({text:d(\"remove\"),title:d(\"removeTitle\"),className:\"jsoneditor-remove\",click:function(){l.onRemove(i.multiselection.nodes)}}),new s(n,{close:t}).show(e,this.content)},e.exports=[{mode:\"tree\",mixin:m,data:\"json\"},{mode:\"view\",mixin:m,data:\"json\"},{mode:\"form\",mixin:m,data:\"json\"}]},DraI:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i,r=\" \",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+\"/\"+t,u=!e.opts.allErrors,h=\"data\"+(s||\"\"),d=e.opts.$data&&a&&a.$data;d?(r+=\" var schema\"+o+\" = \"+e.util.getData(a.$data,s,e.dataPathArr)+\"; \",i=\"schema\"+o):i=a,r+=\"var division\"+o+\";if (\",d&&(r+=\" \"+i+\" !== undefined && ( typeof \"+i+\" != 'number' || \"),r+=\" (division\"+o+\" = \"+h+\" / \"+i+\", \",e.opts.multipleOfPrecision?r+=\" Math.abs(Math.round(division\"+o+\") - division\"+o+\") > 1e-\"+e.opts.multipleOfPrecision+\" \":r+=\" division\"+o+\" !== parseInt(division\"+o+\") \",r+=\" ) \",d&&(r+=\"  )  \"),r+=\" ) {   \";var f=f||[];f.push(r),r=\"\",!1!==e.createErrors?(r+=\" { keyword: 'multipleOf' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(c)+\" , params: { multipleOf: \"+i+\" } \",!1!==e.opts.messages&&(r+=\" , message: 'should be multiple of \",r+=d?\"' + \"+i:i+\"'\"),e.opts.verbose&&(r+=\" , schema:  \",r+=d?\"validate.schema\"+l:\"\"+a,r+=\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+h+\" \"),r+=\" } \"):r+=\" {} \";var p=r;return r=f.pop(),!e.compositeRule&&u?e.async?r+=\" throw new ValidationError([\"+p+\"]); \":r+=\" validate.errors = [\"+p+\"]; return false; \":r+=\" var err = \"+p+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",r+=\"} \",u&&(r+=\" else { \"),r}},DuR2:function(e,t){var n;n=function(){return this}();try{n=n||Function(\"return this\")()||(0,eval)(\"this\")}catch(e){\"object\"==typeof window&&(n=window)}e.exports=n},DwR0:function(e,t,n){\"use strict\";var i=n(\"GnGf\"),r=n(\"/CDJ\"),o=n(\"Kz7p\"),s=n(\"GKfW\"),a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},l={top:\"top\",topleft:\"topleft\",topright:\"topright\",right:\"right\",righttop:\"righttop\",rightbottom:\"rightbottom\",bottom:\"bottom\",bottomleft:\"bottomleft\",bottomright:\"bottomright\",left:\"left\",lefttop:\"lefttop\",leftbottom:\"leftbottom\",auto:\"auto\"},c={subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:[\"class\",\"style\"]};t.a={props:{target:{type:[String,Object]},delay:{type:[Number,Object,String],default:0},offset:{type:[Number,String],default:0},noFade:{type:Boolean,default:!1},container:{type:String,default:null},boundary:{type:[String,Object],default:\"scrollParent\"},show:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},watch:{show:function(e,t){e!==t&&(e?this.onOpen():this.onClose())},disabled:function(e,t){e!==t&&(e?this.onDisable():this.onEnable())}},created:function(){this._toolpop=null,this._obs_title=null,this._obs_content=null},mounted:function(){var e=this;this.$nextTick(function(){e.createToolpop()&&(e.disabled&&e.onDisable(),e.$on(\"open\",e.onOpen),e.$on(\"close\",e.onClose),e.$on(\"disable\",e.onDisable),e.$on(\"enable\",e.onEnable),e.setObservers(!0),e.show&&e.onOpen())})},updated:function(){this._toolpop&&this._toolpop.updateConfig(this.getConfig())},activated:function(){this.setObservers(!0)},deactivated:function(){this._toolpop&&(this.setObservers(!1),this._toolpop.hide())},beforeDestroy:function(){this.$off(\"open\",this.onOpen),this.$off(\"close\",this.onClose),this.$off(\"disable\",this.onDisable),this.$off(\"enable\",this.onEnable),this.setObservers(!1),this.bringItBack(),this._toolpop&&(this._toolpop.destroy(),this._toolpop=null)},computed:{baseConfig:function(){var e=this.container,t=\"object\"===a(this.delay)?this.delay:parseInt(this.delay,10)||0;return{title:(this.title||\"\").trim()||\"\",content:(this.content||\"\").trim()||\"\",placement:l[this.placement]||\"auto\",container:!!e&&(/^#/.test(e)?e:\"#\"+e),boundary:this.boundary,delay:t||0,offset:this.offset||0,animation:!this.noFade,trigger:n.i(i.b)(this.triggers)?this.triggers.join(\" \"):this.triggers,callbacks:{show:this.onShow,shown:this.onShown,hide:this.onHide,hidden:this.onHidden,enabled:this.onEnabled,disabled:this.onDisabled}}}},methods:{getConfig:function(){var e=n.i(r.a)({},this.baseConfig);return this.$refs.title&&this.$refs.title.innerHTML.trim()&&(e.title=this.$refs.title,e.html=!0),this.$refs.content&&this.$refs.content.innerHTML.trim()&&(e.content=this.$refs.content,e.html=!0),e},onOpen:function(){this._toolpop&&this._toolpop.show()},onClose:function(e){this._toolpop?this._toolpop.hide(e):\"function\"==typeof e&&e()},onDisable:function(){this._toolpop&&this._toolpop.disable()},onEnable:function(){this._toolpop&&this._toolpop.enable()},updatePosition:function(){this._toolpop&&this._toolpop.update()},getTarget:function(){var e=this.target;return\"string\"==typeof e?n.i(o.t)(e):\"object\"===(void 0===e?\"undefined\":a(e))&&n.i(o.n)(e.$el)?e.$el:\"object\"===(void 0===e?\"undefined\":a(e))&&n.i(o.n)(e)?e:null},onShow:function(e){this.$emit(\"show\",e)},onShown:function(e){this.setObservers(!0),this.$emit(\"update:show\",!0),this.$emit(\"shown\",e)},onHide:function(e){this.$emit(\"hide\",e)},onHidden:function(e){this.setObservers(!1),this.bringItBack(),this.$emit(\"update:show\",!1),this.$emit(\"hidden\",e)},onEnabled:function(e){e&&\"enabled\"===e.type&&(this.$emit(\"update:disabled\",!1),this.$emit(\"disabled\"))},onDisabled:function(e){e&&\"disabled\"===e.type&&(this.$emit(\"update:disabled\",!0),this.$emit(\"enabled\"))},bringItBack:function(){this.$el&&this.$refs.title&&this.$el.appendChild(this.$refs.title),this.$el&&this.$refs.content&&this.$el.appendChild(this.$refs.content)},setObservers:function(e){e?(this.$refs.title&&(this._obs_title=n.i(s.a)(this.$refs.title,this.updatePosition.bind(this),c)),this.$refs.content&&(this._obs_content=n.i(s.a)(this.$refs.content,this.updatePosition.bind(this),c))):(this._obs_title&&(this._obs_title.disconnect(),this._obs_title=null),this._obs_content&&(this._obs_content.disconnect(),this._obs_content=null))}}}},\"E8q/\":function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e){\"focusin\"===e.type?n.i(c.b)(e.target,\"focus\"):\"focusout\"===e.type&&n.i(c.c)(e.target,\"focus\")}var o=n(\"2PZM\"),s=n(\"il3A\"),a=n(\"GnGf\"),l=n(\"/CDJ\"),c=n(\"Kz7p\"),u=n(\"etPs\"),h={block:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},size:{type:String,default:null},variant:{type:String,default:null},type:{type:String,default:\"button\"},pressed:{type:Boolean,default:null}},d=n.i(u.c)();delete d.href.default,delete d.to.default;var f=n.i(l.b)(d),p=n.i(l.a)(d,h);t.a={functional:!0,props:p,render:function(e,t){var l,c=t.props,h=t.data,d=t.listeners,p=t.children,m=Boolean(c.href||c.to),g=\"boolean\"==typeof c.pressed,v={click:function(e){c.disabled&&e instanceof Event?(e.stopPropagation(),e.preventDefault()):g&&n.i(a.c)(d[\"update:pressed\"]).forEach(function(e){\"function\"==typeof e&&e(!c.pressed)})}};g&&(v.focusin=r,v.focusout=r);var y={staticClass:\"btn\",class:[c.variant?\"btn-\"+c.variant:\"btn-secondary\",(l={},i(l,\"btn-\"+c.size,Boolean(c.size)),i(l,\"btn-block\",c.block),i(l,\"disabled\",c.disabled),i(l,\"active\",c.pressed),l)],props:m?n.i(s.a)(f,c):null,attrs:{type:m?null:c.type,disabled:m?null:c.disabled,\"data-toggle\":g?\"button\":null,\"aria-pressed\":g?String(c.pressed):null,tabindex:c.disabled&&m?\"-1\":h.attrs?h.attrs.tabindex:null},on:v};return e(m?u.b:\"button\",n.i(o.a)(h,y),p)}}},ESch:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"E8q/\"),o=n(\"NCKu\"),s=n(\"OfYj\"),a=n(\"34sA\"),l=n(\"GKfW\"),c=n(\"7C8l\"),u=n(\"tgmf\"),h=n(\"5mWU\"),d=n(\"Kz7p\"),f={FIXED_CONTENT:\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",STICKY_CONTENT:\".sticky-top\",NAVBAR_TOGGLER:\".navbar-toggler\"},p={subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:[\"style\",\"class\"]};t.a={mixins:[s.a,a.a],components:{bBtn:r.a,bBtnClose:o.a},render:function(e){var t=this,n=this,i=n.$slots,r=e(!1);if(!n.hideHeader){var o=i[\"modal-header\"];if(!o){var s=e(!1);n.hideHeaderClose||(s=e(\"b-btn-close\",{props:{disabled:n.is_transitioning,ariaLabel:n.headerCloseLabel,textVariant:n.headerTextVariant},on:{click:function(e){n.hide(\"header-close\")}}},[i[\"modal-header-close\"]])),o=[e(n.titleTag,{class:[\"modal-title\"]},[i[\"modal-title\"]||n.title]),s]}r=e(\"header\",{ref:\"header\",class:n.headerClasses,attrs:{id:n.safeId(\"__BV_modal_header_\")}},[o])}var a=e(\"div\",{ref:\"body\",class:n.bodyClasses,attrs:{id:n.safeId(\"__BV_modal_body_\")}},[i.default]),l=e(!1);if(!n.hideFooter){var c=i[\"modal-footer\"];if(!c){var u=e(!1);n.okOnly||(u=e(\"b-btn\",{props:{variant:n.cancelVariant,size:n.buttonSize,disabled:n.cancelDisabled||n.busy||n.is_transitioning},on:{click:function(e){n.hide(\"cancel\")}}},[i[\"modal-cancel\"]||n.cancelTitle]));c=[e(\"b-btn\",{props:{variant:n.okVariant,size:n.buttonSize,disabled:n.okDisabled||n.busy||n.is_transitioning},on:{click:function(e){n.hide(\"ok\")}}},[i[\"modal-ok\"]||n.okTitle]),u]}l=e(\"footer\",{ref:\"footer\",class:n.footerClasses,attrs:{id:n.safeId(\"__BV_modal_footer_\")}},[c])}var h=e(\"div\",{ref:\"content\",class:[\"modal-content\"],attrs:{tabindex:\"-1\",role:\"document\",\"aria-labelledby\":n.hideHeader?null:n.safeId(\"__BV_modal_header_\"),\"aria-describedby\":n.safeId(\"__BV_modal_body_\")},on:{focusout:n.onFocusout,click:function(e){e.stopPropagation(),t.$root.$emit(\"bv::dropdown::shown\")}}},[r,a,l]),d=e(\"div\",{class:n.dialogClasses},[h]),f=e(\"div\",{ref:\"modal\",class:n.modalClasses,directives:[{name:\"show\",rawName:\"v-show\",value:n.is_visible,expression:\"is_visible\"}],attrs:{id:n.safeId(),role:\"dialog\",\"aria-hidden\":n.is_visible?null:\"true\"},on:{click:n.onClickOut,keydown:n.onEsc}},[d]);f=e(\"transition\",{props:{enterClass:\"\",enterToClass:\"\",enterActiveClass:\"\",leaveClass:\"\",leaveActiveClass:\"\",leaveToClass:\"\"},on:{\"before-enter\":n.onBeforeEnter,enter:n.onEnter,\"after-enter\":n.onAfterEnter,\"before-leave\":n.onBeforeLeave,leave:n.onLeave,\"after-leave\":n.onAfterLeave}},[f]);var p=e(!1);n.hideBackdrop||!n.is_visible&&!n.is_transitioning||(p=e(\"div\",{class:n.backdropClasses,attrs:{id:n.safeId(\"__BV_modal_backdrop_\")}}));var m=e(!1);return n.is_hidden||(m=e(\"div\",{attrs:{id:n.safeId(\"__BV_modal_outer_\")}},[f,p])),e(\"div\",{},[m])},data:function(){return{is_hidden:this.lazy||!1,is_visible:!1,is_transitioning:!1,is_show:!1,is_block:!1,scrollbarWidth:0,isBodyOverflowing:!1,return_focus:this.returnFocus||null}},model:{prop:\"visible\",event:\"change\"},props:{title:{type:String,default:\"\"},titleTag:{type:String,default:\"h5\"},size:{type:String,default:\"md\"},centered:{type:Boolean,default:!1},buttonSize:{type:String,default:\"\"},noFade:{type:Boolean,default:!1},noCloseOnBackdrop:{type:Boolean,default:!1},noCloseOnEsc:{type:Boolean,default:!1},noEnforceFocus:{type:Boolean,default:!1},headerBgVariant:{type:String,default:null},headerBorderVariant:{type:String,default:null},headerTextVariant:{type:String,default:null},headerClass:{type:[String,Array],default:null},bodyBgVariant:{type:String,default:null},bodyTextVariant:{type:String,default:null},bodyClass:{type:[String,Array],default:null},footerBgVariant:{type:String,default:null},footerBorderVariant:{type:String,default:null},footerTextVariant:{type:String,default:null},footerClass:{type:[String,Array],default:null},hideHeader:{type:Boolean,default:!1},hideFooter:{type:Boolean,default:!1},hideHeaderClose:{type:Boolean,default:!1},hideBackdrop:{type:Boolean,default:!1},okOnly:{type:Boolean,default:!1},okDisabled:{type:Boolean,default:!1},cancelDisabled:{type:Boolean,default:!1},visible:{type:Boolean,default:!1},returnFocus:{default:null},headerCloseLabel:{type:String,default:\"Close\"},cancelTitle:{type:String,default:\"Cancel\"},okTitle:{type:String,default:\"OK\"},cancelVariant:{type:String,default:\"secondary\"},okVariant:{type:String,default:\"primary\"},lazy:{type:Boolean,default:!1},busy:{type:Boolean,default:!1}},computed:{modalClasses:function(){return[\"modal\",{fade:!this.noFade,show:this.is_show,\"d-block\":this.is_block}]},dialogClasses:function(){var e;return[\"modal-dialog\",(e={},i(e,\"modal-\"+this.size,Boolean(this.size)),i(e,\"modal-dialog-centered\",this.centered),e)]},backdropClasses:function(){return[\"modal-backdrop\",{fade:!this.noFade,show:this.is_show||this.noFade}]},headerClasses:function(){var e;return[\"modal-header\",(e={},i(e,\"bg-\"+this.headerBgVariant,Boolean(this.headerBgVariant)),i(e,\"text-\"+this.headerTextVariant,Boolean(this.headerTextVariant)),i(e,\"border-\"+this.headerBorderVariant,Boolean(this.headerBorderVariant)),e),this.headerClass]},bodyClasses:function(){var e;return[\"modal-body\",(e={},i(e,\"bg-\"+this.bodyBgVariant,Boolean(this.bodyBgVariant)),i(e,\"text-\"+this.bodyTextVariant,Boolean(this.bodyTextVariant)),e),this.bodyClass]},footerClasses:function(){var e;return[\"modal-footer\",(e={},i(e,\"bg-\"+this.footerBgVariant,Boolean(this.footerBgVariant)),i(e,\"text-\"+this.footerTextVariant,Boolean(this.footerTextVariant)),i(e,\"border-\"+this.footerBorderVariant,Boolean(this.footerBorderVariant)),e),this.footerClass]}},watch:{visible:function(e,t){e!==t&&this[e?\"show\":\"hide\"]()}},methods:{show:function(){if(!this.is_visible){var e=new h.a(\"show\",{cancelable:!0,vueTarget:this,target:this.$refs.modal,relatedTarget:null});this.emitEvent(e),e.defaultPrevented||this.is_visible||(n.i(d.e)(document.body,\"modal-open\")?this.$root.$once(\"bv::modal::hidden\",this.doShow):this.doShow())}},hide:function(e){if(this.is_visible){var t=new h.a(\"hide\",{cancelable:!0,vueTarget:this,target:this.$refs.modal,relatedTarget:null,isOK:e||null,trigger:e||null,cancel:function(){n.i(c.a)(\"b-modal: evt.cancel() is deprecated. Please use evt.preventDefault().\"),this.preventDefault()}});\"ok\"===e?this.$emit(\"ok\",t):\"cancel\"===e&&this.$emit(\"cancel\",t),this.emitEvent(t),!t.defaultPrevented&&this.is_visible&&(this._observer&&(this._observer.disconnect(),this._observer=null),this.is_visible=!1,this.$emit(\"change\",!1))}},doShow:function(){var e=this;this.is_hidden=!1,this.$nextTick(function(){e.is_visible=!0,e.$emit(\"change\",!0),e._observer=n.i(l.a)(e.$refs.content,e.adjustDialog.bind(e),p)})},onBeforeEnter:function(){this.is_transitioning=!0,this.checkScrollbar(),this.setScrollbar(),this.adjustDialog(),n.i(d.b)(document.body,\"modal-open\"),this.setResizeEvent(!0)},onEnter:function(){this.is_block=!0,this.$refs.modal.scrollTop=0},onAfterEnter:function(){var e=this;this.is_show=!0,this.is_transitioning=!1,this.$nextTick(function(){e.focusFirst();var t=new h.a(\"shown\",{cancelable:!1,vueTarget:e,target:e.$refs.modal,relatedTarget:null});e.emitEvent(t)})},onBeforeLeave:function(){this.is_transitioning=!0,this.setResizeEvent(!1)},onLeave:function(){this.is_show=!1},onAfterLeave:function(){var e=this;this.is_block=!1,this.resetAdjustments(),this.resetScrollbar(),this.is_transitioning=!1,n.i(d.c)(document.body,\"modal-open\"),this.$nextTick(function(){e.is_hidden=e.lazy||!1,e.returnFocusTo();var t=new h.a(\"hidden\",{cancelable:!1,vueTarget:e,target:e.lazy?null:e.$refs.modal,relatedTarget:null});e.emitEvent(t)})},emitEvent:function(e){var t=e.type;this.$emit(t,e),this.$root.$emit(\"bv::modal::\"+t,e)},onClickOut:function(e){this.is_visible&&!this.noCloseOnBackdrop&&this.hide(\"backdrop\")},onEsc:function(e){e.keyCode===u.a.ESC&&this.is_visible&&!this.noCloseOnEsc&&this.hide(\"esc\")},onFocusout:function(e){var t=this.$refs.content;!this.noEnforceFocus&&this.is_visible&&t&&!t.contains(e.relatedTarget)&&t.focus()},setResizeEvent:function(e){var t=this;[\"resize\",\"orientationchange\"].forEach(function(i){e?n.i(d.h)(window,i,t.adjustDialog):n.i(d.i)(window,i,t.adjustDialog)})},showHandler:function(e,t){e===this.id&&(this.return_focus=t||null,this.show())},hideHandler:function(e){e===this.id&&this.hide()},modalListener:function(e){e.vueTarget!==this&&this.hide()},focusFirst:function(){if(\"undefined\"!=typeof document){var e=this.$refs.content,t=this.$refs.modal,n=document.activeElement;n&&e&&e.contains(n)||e&&(t&&(t.scrollTop=0),e.focus())}},returnFocusTo:function(){var e=this.returnFocus||this.return_focus||null;\"string\"==typeof e&&(e=n.i(d.a)(e)),e&&(e=e.$el||e,n.i(d.f)(e)&&e.focus())},getScrollbarWidth:function(){var e=document.createElement(\"div\");e.className=\"modal-scrollbar-measure\",document.body.appendChild(e),this.scrollbarWidth=e.getBoundingClientRect().width-e.clientWidth,document.body.removeChild(e)},adjustDialog:function(){if(this.is_visible){var e=this.$refs.modal,t=e.scrollHeight>document.documentElement.clientHeight;!this.isBodyOverflowing&&t&&(e.style.paddingLeft=this.scrollbarWidth+\"px\"),this.isBodyOverflowing&&!t&&(e.style.paddingRight=this.scrollbarWidth+\"px\")}},resetAdjustments:function(){var e=this.$refs.modal;e&&(e.style.paddingLeft=\"\",e.style.paddingRight=\"\")},checkScrollbar:function(){var e=n.i(d.r)(document.body);this.isBodyOverflowing=e.left+e.right<window.innerWidth},setScrollbar:function(){if(this.isBodyOverflowing){var e=window.getComputedStyle,t=document.body,i=this.scrollbarWidth;n.i(d.q)(f.FIXED_CONTENT).forEach(function(t){var r=t.style.paddingRight,o=e(t).paddingRight||0;n.i(d.g)(t,\"data-padding-right\",r),t.style.paddingRight=parseFloat(o)+i+\"px\"}),n.i(d.q)(f.STICKY_CONTENT).forEach(function(t){var r=t.style.marginRight,o=e(t).marginRight||0;n.i(d.g)(t,\"data-margin-right\",r),t.style.marginRight=parseFloat(o)-i+\"px\"}),n.i(d.q)(f.NAVBAR_TOGGLER).forEach(function(t){var r=t.style.marginRight,o=e(t).marginRight||0;n.i(d.g)(t,\"data-margin-right\",r),t.style.marginRight=parseFloat(o)+i+\"px\"});var r=t.style.paddingRight,o=e(t).paddingRight;n.i(d.g)(t,\"data-padding-right\",r),t.style.paddingRight=parseFloat(o)+i+\"px\"}},resetScrollbar:function(){n.i(d.q)(f.FIXED_CONTENT).forEach(function(e){n.i(d.u)(e,\"data-padding-right\")&&(e.style.paddingRight=n.i(d.d)(e,\"data-padding-right\")||\"\",n.i(d.k)(e,\"data-padding-right\"))}),n.i(d.q)(f.STICKY_CONTENT+\", \"+f.NAVBAR_TOGGLER).forEach(function(e){n.i(d.u)(e,\"data-margin-right\")&&(e.style.marginRight=n.i(d.d)(e,\"data-margin-right\")||\"\",n.i(d.k)(e,\"data-margin-right\"))});var e=document.body;n.i(d.u)(e,\"data-padding-right\")&&(e.style.paddingRight=n.i(d.d)(e,\"data-padding-right\")||\"\",n.i(d.k)(e,\"data-padding-right\"))}},created:function(){this._observer=null},mounted:function(){this.getScrollbarWidth(),this.listenOnRoot(\"bv::show::modal\",this.showHandler),this.listenOnRoot(\"bv::hide::modal\",this.hideHandler),this.listenOnRoot(\"bv::modal::show\",this.modalListener),!0===this.visible&&this.show()},beforeDestroy:function(){this._observer&&(this._observer.disconnect(),this._observer=null),this.setResizeEvent(!1),n.i(d.c)(document.body,\"modal-open\"),this.resetAdjustments(),this.resetScrollbar()}}},EXyZ:function(e,t,n){\"use strict\";var i=n(\"AFT4\"),r=n(\"7C8l\"),o=n(\"DwR0\");t.a={mixins:[o.a],render:function(e){return e(\"div\",{class:[\"d-none\"],style:{display:\"none\"},attrs:{\"aria-hidden\":!0}},[e(\"div\",{ref:\"title\"},this.$slots.default)])},data:function(){return{}},props:{title:{type:String,default:\"\"},triggers:{type:[String,Array],default:\"hover focus\"},placement:{type:String,default:\"top\"}},methods:{createToolpop:function(){var e=this.getTarget();return e?this._toolpop=new i.a(e,this.getConfig(),this.$root):(this._toolpop=null,n.i(r.a)(\"b-tooltip: 'target' element not found!\")),this._toolpop}}}},Ea66:function(e,t,n){\"use strict\";var i=n(\"OfYj\"),r=n(\"/gqF\"),o=n(\"TMTb\"),s=n(\"vd6y\"),a=n(\"AyHp\");t.a={mixins:[i.a,s.a,r.a,o.a],render:function(e){var t=this,i=e(\"input\",{ref:\"radio\",class:[t.is_ButtonMode?\"\":t.is_Plain?\"form-check-input\":\"custom-control-input\",t.get_StateClass],directives:[{name:\"model\",rawName:\"v-model\",value:t.computedLocalChecked,expression:\"computedLocalChecked\"}],attrs:{id:t.safeId(),type:\"radio\",name:t.get_Name,required:t.get_Name&&t.is_Required,disabled:t.is_Disabled,autocomplete:\"off\"},domProps:{value:t.value,checked:n.i(a.a)(t.computedLocalChecked,t.value)},on:{focus:t.handleFocus,blur:t.handleFocus,change:t.emitChange,__c:function(e){t.computedLocalChecked=t.value}}}),r=e(t.is_ButtonMode?\"span\":\"label\",{class:t.is_ButtonMode?null:t.is_Plain?\"form-check-label\":\"custom-control-label\",attrs:{for:t.is_ButtonMode?null:t.safeId()}},[t.$slots.default]);return t.is_ButtonMode?e(\"label\",{class:[t.buttonClasses]},[i,r]):e(\"div\",{class:[t.is_Plain?\"form-check\":t.labelClasses,{\"form-check-inline\":t.is_Plain&&!t.is_Stacked},{\"custom-control-inline\":!t.is_Plain&&!t.is_Stacked}]},[i,r])},watch:{checked:function(e,t){this.computedLocalChecked=e},computedLocalChceked:function(e,t){this.$emit(\"input\",this.computedLocalChceked)}},computed:{is_Checked:function(){return n.i(a.a)(this.value,this.computedLocalChecked)},labelClasses:function(){return[this.get_Size?\"form-control-\"+this.get_Size:\"\",\"custom-control\",\"custom-radio\",this.get_StateClass]}},methods:{emitChange:function(e){var t=e.target.checked;this.$emit(\"change\",t?this.value:null),this.is_Child&&this.$parent.$emit(\"change\",this.computedLocalChecked)}}}},EqjI:function(e,t){e.exports=function(e){return\"object\"==typeof e?null!==e:\"function\"==typeof e}},FEtK:function(e,t,n){\"use strict\";var i=n(\"HDlv\"),r=n(\"q21c\"),o={bAlert:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},\"FGX+\":function(e,t,n){\"use strict\";var i=n(\"OfYj\"),r=n(\"/gqF\"),o=n(\"60E9\"),s=n(\"TMTb\"),a=n(\"GnGf\"),l=n(\"Id91\"),c=(n.n(l),[\"text\",\"password\",\"email\",\"number\",\"url\",\"tel\",\"search\",\"range\",\"color\",\"date\",\"time\",\"datetime\",\"datetime-local\",\"month\",\"week\"]);t.a={mixins:[i.a,r.a,o.a,s.a],render:function(e){var t=this;return e(\"input\",{ref:\"input\",class:t.inputClass,domProps:{value:t.localValue},attrs:{id:t.safeId(),name:t.name,type:t.localType,disabled:t.disabled,required:t.required,readonly:t.readonly||t.plaintext,placeholder:t.placeholder,autocomplete:t.autocomplete||null,\"aria-required\":t.required?\"true\":null,\"aria-invalid\":t.computedAriaInvalid},on:{input:t.onInput,change:t.onChange}})},data:function(){return{localValue:this.value}},props:{value:{default:null},type:{type:String,default:\"text\",validator:function(e){return n.i(a.d)(c,e)}},ariaInvalid:{type:[Boolean,String],default:!1},readonly:{type:Boolean,default:!1},plaintext:{type:Boolean,default:!1},autocomplete:{type:String,default:null},placeholder:{type:String,default:null},formatter:{type:Function},lazyFormatter:{type:Boolean,default:!1}},computed:{localType:function(){return n.i(a.d)(c,this.type)?this.type:\"text\"},inputClass:function(){return[this.plaintext?\"form-control-plaintext\":\"form-control\",this.sizeFormClass,this.stateClass]},computedAriaInvalid:function(){return this.ariaInvalid&&\"false\"!==this.ariaInvalid?!0===this.ariaInvalid?\"true\":this.ariaInvalid:!1===this.computedState?\"true\":null}},watch:{value:function(e,t){e!==t&&(this.localValue=e)},localValue:function(e,t){e!==t&&this.$emit(\"input\",e)}},methods:{format:function(e,t){if(this.formatter){var n=this.formatter(e,t);if(n!==e)return n}return e},onInput:function(e){var t=e.target.value;this.lazyFormatter?this.localValue=t:this.localValue=this.format(t,e)},onChange:function(e){this.localValue=this.format(e.target.value,e),this.$emit(\"change\",this.localValue)},focus:function(){this.disabled||this.$el.focus()}}}},\"FZ+f\":function(e,t){function n(e,t){var n=e[1]||\"\",r=e[3];if(!r)return n;if(t&&\"function\"==typeof btoa){var o=i(r);return[n].concat(r.sources.map(function(e){return\"/*# sourceURL=\"+r.sourceRoot+e+\" */\"})).concat([o]).join(\"\\n\")}return[n].join(\"\\n\")}function i(e){return\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+\" */\"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var i=n(t,e);return t[2]?\"@media \"+t[2]+\"{\"+i+\"}\":i}).join(\"\")},t.i=function(e,n){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var i={},r=0;r<this.length;r++){var o=this[r][0];\"number\"==typeof o&&(i[o]=!0)}for(r=0;r<e.length;r++){var s=e[r];\"number\"==typeof s[0]&&i[s[0]]||(n&&!s[2]?s[2]=n:n&&(s[2]=\"(\"+s[2]+\") and (\"+n+\")\"),t.push(s))}},t}},FeBl:function(e,t){var n=e.exports={version:\"2.5.3\"};\"number\"==typeof __e&&(__e=n)},FekY:function(e,t,n){\"use strict\";function i(e,t){return n.i(r.a)(t).map(function(t,n){return{number:n+e,className:null}})}var r=n(\"HHnW\"),o=n(\"tgmf\"),s=n(\"Kz7p\"),a=n(\"etPs\"),l={disabled:{type:Boolean,default:!1},value:{type:Number,default:1},limit:{type:Number,default:5},size:{type:String,default:\"md\"},align:{type:String,default:\"left\"},hideGotoEndButtons:{type:Boolean,default:!1},ariaLabel:{type:String,default:\"Pagination\"},labelFirstPage:{type:String,default:\"Goto first page\"},firstText:{type:String,default:\"&laquo;\"},labelPrevPage:{type:String,default:\"Goto previous page\"},prevText:{type:String,default:\"&lsaquo;\"},labelNextPage:{type:String,default:\"Goto next page\"},nextText:{type:String,default:\"&rsaquo;\"},labelLastPage:{type:String,default:\"Goto last page\"},lastText:{type:String,default:\"&raquo;\"},labelPage:{type:String,default:\"Goto page\"},hideEllipsis:{type:Boolean,default:!1},ellipsisText:{type:String,default:\"&hellip;\"}};t.a={components:{bLink:a.b},data:function(){return{showFirstDots:!1,showLastDots:!1,currentPage:this.value}},props:l,render:function(e){var t=this,n=[],i=function(n,i,r,s){return s=s||n,t.disabled||t.isActive(s)?e(\"li\",{class:[\"page-item\",\"disabled\"],attrs:{role:\"none presentation\",\"aria-hidden\":\"true\"}},[e(\"span\",{class:[\"page-link\"],domProps:{innerHTML:r}})]):e(\"li\",{class:[\"page-item\"],attrs:{role:\"none presentation\"}},[e(\"b-link\",{class:[\"page-link\"],props:t.linkProps(n),attrs:{role:\"menuitem\",tabindex:\"-1\",\"aria-label\":i,\"aria-controls\":t.ariaControls||null},on:{click:function(e){t.onClick(n,e)},keydown:function(e){e.keyCode===o.a.SPACE&&(e.preventDefault(),t.onClick(n,e))}}},[e(\"span\",{attrs:{\"aria-hidden\":\"true\"},domProps:{innerHTML:r}})])])},r=function(){return e(\"li\",{class:[\"page-item\",\"disabled\",\"d-none\",\"d-sm-flex\"],attrs:{role:\"separator\"}},[e(\"span\",{class:[\"page-link\"],domProps:{innerHTML:t.ellipsisText}})])};n.push(t.hideGotoEndButtons?e(!1):i(1,t.labelFirstPage,t.firstText)),n.push(i(t.currentPage-1,t.labelPrevPage,t.prevText,1)),n.push(t.showFirstDots?r():e(!1)),t.pageList.forEach(function(i){var r=void 0,s=t.makePage(i.number);if(t.disabled)r=e(\"span\",{class:[\"page-link\"],domProps:{innerHTML:s}});else{var a=t.isActive(i.number);r=e(\"b-link\",{class:t.pageLinkClasses(i),props:t.linkProps(i.number),attrs:{role:\"menuitemradio\",tabindex:a?\"0\":\"-1\",\"aria-controls\":t.ariaControls||null,\"aria-label\":t.labelPage+\" \"+i.number,\"aria-checked\":a?\"true\":\"false\",\"aria-posinset\":i.number,\"aria-setsize\":t.numberOfPages},domProps:{innerHTML:s},on:{click:function(e){t.onClick(i.number,e)},keydown:function(e){e.keyCode===o.a.SPACE&&(e.preventDefault(),t.onClick(i.number,e))}}})}n.push(e(\"li\",{key:i.number,class:t.pageItemClasses(i),attrs:{role:\"none presentation\"}},[r]))}),n.push(t.showLastDots?r():e(!1)),n.push(i(t.currentPage+1,t.labelNextPage,t.nextText,t.numberOfPages)),n.push(t.hideGotoEndButtons?e(!1):i(t.numberOfPages,t.labelLastPage,t.lastText));var s=e(\"ul\",{ref:\"ul\",class:[\"pagination\",\"b-pagination\",t.btnSize,t.alignment],attrs:{role:\"menubar\",\"aria-disabled\":t.disabled?\"true\":\"false\",\"aria-label\":t.ariaLabel||null},on:{keydown:function(e){var n=e.keyCode,i=e.shiftKey;n===o.a.LEFT?(e.preventDefault(),i?t.focusFirst():t.focusPrev()):n===o.a.RIGHT&&(e.preventDefault(),i?t.focusLast():t.focusNext())}}},n);return t.isNav?e(\"nav\",{},[s]):s},watch:{currentPage:function(e,t){e!==t&&this.$emit(\"input\",e)},value:function(e,t){e!==t&&(this.currentPage=e)}},computed:{btnSize:function(){return this.size?\"pagination-\"+this.size:\"\"},alignment:function(){return\"center\"===this.align?\"justify-content-center\":\"end\"===this.align||\"right\"===this.align?\"justify-content-end\":\"\"},pageList:function(){this.currentPage>this.numberOfPages?this.currentPage=this.numberOfPages:this.currentPage<1&&(this.currentPage=1),this.showFirstDots=!1,this.showLastDots=!1;var e=this.limit,t=1;this.numberOfPages<=this.limit?e=this.numberOfPages:this.currentPage<this.limit-1&&this.limit>3?this.hideEllipsis||(e=this.limit-1,this.showLastDots=!0):this.numberOfPages-this.currentPage+2<this.limit&&this.limit>3?(this.hideEllipsis||(this.showFirstDots=!0,e=this.limit-1),t=this.numberOfPages-e+1):(this.limit>3&&!this.hideEllipsis&&(this.showFirstDots=!0,this.showLastDots=!0,e=this.limit-2),t=this.currentPage-Math.floor(e/2)),t<1?t=1:t>this.numberOfPages-e&&(t=this.numberOfPages-e+1);var n=i(t,e);if(n.length>3){var r=this.currentPage-t;if(0===r)for(var o=3;o<n.length;o++)n[o].className=\"d-none d-sm-flex\";else if(r===n.length-1)for(var s=0;s<n.length-3;s++)n[s].className=\"d-none d-sm-flex\";else{for(var a=0;a<r-1;a++)n[a].className=\"d-none d-sm-flex\";for(var l=n.length-1;l>r+1;l--)n[l].className=\"d-none d-sm-flex\"}}return n}},methods:{isActive:function(e){return e===this.currentPage},pageItemClasses:function(e){return[\"page-item\",this.disabled?\"disabled\":\"\",this.isActive(e.number)?\"active\":\"\",e.className]},pageLinkClasses:function(e){return[\"page-link\",this.disabled?\"disabled\":\"\",this.isActive(e.number)?\"btn-primary\":\"\"]},getButtons:function(){return n.i(s.q)(\"a.page-link\",this.$el).filter(function(e){return n.i(s.f)(e)})},setBtnFocus:function(e){this.$nextTick(function(){e.focus()})},focusCurrent:function(){var e=this,t=this.getButtons().find(function(t){return parseInt(n.i(s.d)(t,\"aria-posinset\"),10)===e.currentPage});t&&t.focus?this.setBtnFocus(t):this.focusFirst()},focusFirst:function(){var e=this.getButtons().find(function(e){return!n.i(s.l)(e)});e&&e.focus&&e!==document.activeElement&&this.setBtnFocus(e)},focusLast:function(){var e=this.getButtons().reverse().find(function(e){return!n.i(s.l)(e)});e&&e.focus&&e!==document.activeElement&&this.setBtnFocus(e)},focusPrev:function(){var e=this.getButtons(),t=e.indexOf(document.activeElement);t>0&&!n.i(s.l)(e[t-1])&&e[t-1].focus&&this.setBtnFocus(e[t-1])},focusNext:function(){var e=this.getButtons(),t=e.indexOf(document.activeElement);t<e.length-1&&!n.i(s.l)(e[t+1])&&e[t+1].focus&&this.setBtnFocus(e[t+1])}}}},FhUz:function(e,t,n){\"use strict\";function i(e){var t={};\"string\"==typeof e.value?t.content=e.value:\"function\"==typeof e.value?t.content=e.value:\"object\"===u(e.value)&&(t=n.i(l.a)(e.value)),e.arg&&(t.container=\"#\"+e.arg),n.i(l.b)(e.modifiers).forEach(function(e){if(/^html$/.test(e))t.html=!0;else if(/^nofade$/.test(e))t.animation=!1;else if(/^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/.test(e))t.placement=e;else if(/^(window|viewport)$/.test(e))t.boundary=e;else if(/^d\\d+$/.test(e)){var n=parseInt(e.slice(1),10)||0;n&&(t.delay=n)}else if(/^o-?\\d+$/.test(e)){var i=parseInt(e.slice(1),10)||0;i&&(t.offset=i)}});var i={};return(\"string\"==typeof t.trigger?t.trigger.trim().split(/\\s+/):[]).forEach(function(e){f[e]&&(i[e]=!0)}),n.i(l.b)(f).forEach(function(t){e.modifiers[t]&&(i[t]=!0)}),t.trigger=n.i(l.b)(i).join(\" \"),\"blur\"===t.trigger&&(t.trigger=\"focus\"),t.trigger||delete t.trigger,t}function r(e,t,r){if(h)return s.a?void(e[d]?e[d].updateConfig(i(t)):e[d]=new a.a(e,i(t),r.context.$root)):void n.i(c.a)(\"v-b-popover: Popper.js is required for popovers to work\")}function o(e){h&&e[d]&&(e[d].destroy(),e[d]=null,delete e[d])}var s=n(\"Zgw8\"),a=n(\"Rakl\"),l=n(\"/CDJ\"),c=n(\"7C8l\"),u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},h=\"undefined\"!=typeof window&&\"undefined\"!=typeof document,d=\"__BV_PopOver__\",f={focus:!0,hover:!0,click:!0,blur:!0};t.a={bind:function(e,t,n){r(e,t,n)},inserted:function(e,t,n){r(e,t,n)},update:function(e,t,n){t.value!==t.oldValue&&r(e,t,n)},componentUpdated:function(e,t,n){t.value!==t.oldValue&&r(e,t,n)},unbind:function(e){o(e)}}},Ftdo:function(e,t,n){\"use strict\";function i(e){this.editor=e,this.history=[],this.index=-1,this.clear(),this.actions={editField:{undo:function(e){e.node.updateField(e.oldValue)},redo:function(e){e.node.updateField(e.newValue)}},editValue:{undo:function(e){e.node.updateValue(e.oldValue)},redo:function(e){e.node.updateValue(e.newValue)}},changeType:{undo:function(e){e.node.changeType(e.oldType)},redo:function(e){e.node.changeType(e.newType)}},appendNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){e.nodes.forEach(function(t){e.parent.appendChild(t)})}},insertBeforeNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){e.nodes.forEach(function(t){e.parent.insertBefore(t,e.beforeNode)})}},insertAfterNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){var t=e.afterNode;e.nodes.forEach(function(n){e.parent.insertAfter(e.node,t),t=n})}},removeNodes:{undo:function(e){var t=e.parent,n=t.childs[e.index]||t.append;e.nodes.forEach(function(e){t.insertBefore(e,n)})},redo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})}},duplicateNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){var t=e.afterNode;e.nodes.forEach(function(n){e.parent.insertAfter(n,t),t=n})}},moveNodes:{undo:function(e){e.nodes.forEach(function(t){e.oldBeforeNode.parent.moveBefore(t,e.oldBeforeNode)})},redo:function(e){e.nodes.forEach(function(t){e.newBeforeNode.parent.moveBefore(t,e.newBeforeNode)})}},sort:{undo:function(e){var t=e.node;t.hideChilds(),t.sort=e.oldSort,t.childs=e.oldChilds,t.showChilds()},redo:function(e){var t=e.node;t.hideChilds(),t.sort=e.newSort,t.childs=e.newChilds,t.showChilds()}}}}n(\"QmdE\");i.prototype.onChange=function(){},i.prototype.add=function(e,t){this.index++,this.history[this.index]={action:e,params:t,timestamp:new Date},this.index<this.history.length-1&&this.history.splice(this.index+1,this.history.length-this.index-1),this.onChange()},i.prototype.clear=function(){this.history=[],this.index=-1,this.onChange()},i.prototype.canUndo=function(){return this.index>=0},i.prototype.canRedo=function(){return this.index<this.history.length-1},i.prototype.undo=function(){if(this.canUndo()){var e=this.history[this.index];if(e){var t=this.actions[e.action];t&&t.undo?(t.undo(e.params),e.params.oldSelection&&this.editor.setSelection(e.params.oldSelection)):console.error(new Error('unknown action \"'+e.action+'\"'))}this.index--,this.onChange()}},i.prototype.redo=function(){if(this.canRedo()){this.index++;var e=this.history[this.index];if(e){var t=this.actions[e.action];t&&t.redo?(t.redo(e.params),e.params.newSelection&&this.editor.setSelection(e.params.newSelection)):console.error(new Error('unknown action \"'+e.action+'\"'))}this.onChange()}},i.prototype.destroy=function(){this.editor=null,this.history=[],this.index=-1},e.exports=i},\"G+QY\":function(e,t,n){\"use strict\";var i=n(\"PxEr\"),r=n(\"q21c\"),o={bModal:i.a},s={install:function(e){n.i(r.b)(e,o)}};n.i(r.a)(s),t.a=s},G6Bx:function(e,t){ace.define(\"ace/theme/jsoneditor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!1,t.cssClass=\"ace-jsoneditor\",t.cssText='.ace-jsoneditor .ace_gutter {background: #ebebeb;color: #333}.ace-jsoneditor.ace_editor {font-family: \"dejavu sans mono\", \"droid sans mono\", consolas, monaco, \"lucida console\", \"courier new\", courier, monospace, sans-serif;line-height: 1.3;background-color: #fff;}.ace-jsoneditor .ace_print-margin {width: 1px;background: #e8e8e8}.ace-jsoneditor .ace_scroller {background-color: #FFFFFF}.ace-jsoneditor .ace_text-layer {color: gray}.ace-jsoneditor .ace_variable {color: #1a1a1a}.ace-jsoneditor .ace_cursor {border-left: 2px solid #000000}.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #000000}.ace-jsoneditor .ace_marker-layer .ace_selection {background: lightgray}.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;border-radius: 2px}.ace-jsoneditor .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-jsoneditor .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-jsoneditor .ace_marker-layer .ace_active-line {background: #FFFBD1}.ace-jsoneditor .ace_gutter-active-line {background-color : #dcdcdc}.ace-jsoneditor .ace_marker-layer .ace_selected-word {border: 1px solid lightgray}.ace-jsoneditor .ace_invisible {color: #BFBFBF}.ace-jsoneditor .ace_keyword,.ace-jsoneditor .ace_meta,.ace-jsoneditor .ace_support.ace_constant.ace_property-value {color: #AF956F}.ace-jsoneditor .ace_keyword.ace_operator {color: #484848}.ace-jsoneditor .ace_keyword.ace_other.ace_unit {color: #96DC5F}.ace-jsoneditor .ace_constant.ace_language {color: darkorange}.ace-jsoneditor .ace_constant.ace_numeric {color: red}.ace-jsoneditor .ace_constant.ace_character.ace_entity {color: #BF78CC}.ace-jsoneditor .ace_invalid {color: #FFFFFF;background-color: #FF002A;}.ace-jsoneditor .ace_fold {background-color: #AF956F;border-color: #000000}.ace-jsoneditor .ace_storage,.ace-jsoneditor .ace_support.ace_class,.ace-jsoneditor .ace_support.ace_function,.ace-jsoneditor .ace_support.ace_other,.ace-jsoneditor .ace_support.ace_type {color: #C52727}.ace-jsoneditor .ace_string {color: green}.ace-jsoneditor .ace_comment {color: #BCC8BA}.ace-jsoneditor .ace_entity.ace_name.ace_tag,.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-jsoneditor .ace_markup.ace_underline {text-decoration: underline}.ace-jsoneditor .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y}',e(\"../lib/dom\").importCssString(t.cssText,t.cssClass)})},GKfW:function(e,t,n){\"use strict\";function i(e,t,i){var s=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,a=window.addEventListener;if(e=e?e.$el||e:null,!n.i(o.n)(e))return null;var l=null;return s?(l=new s(function(e){for(var n=!1,i=0;i<e.length&&!n;i++){var r=e[i],o=r.type,s=r.target;\"characterData\"===o&&s.nodeType===Node.TEXT_NODE?n=!0:\"attributes\"===o?n=!0:\"childList\"===o&&(r.addedNodes.length>0||r.removedNodes.length>0)&&(n=!0)}n&&t()}),l.observe(e,n.i(r.a)({childList:!0,subtree:!0},i))):a&&(e.addEventListener(\"DOMNodeInserted\",t,!1),e.addEventListener(\"DOMNodeRemoved\",t,!1)),l}t.a=i;var r=n(\"/CDJ\"),o=n(\"Kz7p\")},GnGf:function(e,t,n){\"use strict\";function i(){return Array.prototype.concat.apply([],arguments)}n.d(t,\"a\",function(){return r}),n.d(t,\"b\",function(){return o}),n.d(t,\"d\",function(){return s}),t.c=i,Array.from||(Array.from=function(){var e=Object.prototype.toString,t=function(t){return\"function\"==typeof t||\"[object Function]\"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,r=function(e){return Math.min(Math.max(n(e),0),i)};return function(e){var n=this,i=Object(e);if(null==e)throw new TypeError(\"Array.from requires an array-like object - not null or undefined\");var o=arguments.length>1?arguments[1]:void 0,s=void 0;if(void 0!==o){if(!t(o))throw new TypeError(\"Array.from: when provided, the second argument must be a function\");arguments.length>2&&(s=arguments[2])}for(var a=r(i.length),l=t(n)?Object(new n(a)):new Array(a),c=0,u=void 0;c<a;)u=i[c],l[c]=o?void 0===s?o(u,c):o.call(s,u,c):u,c+=1;return l.length=a,l}}()),Array.prototype.find||Object.defineProperty(Array.prototype,\"find\",{value:function(e){if(null==this)throw new TypeError('\"this\" is null or not defined');var t=Object(this),n=t.length>>>0;if(\"function\"!=typeof e)throw new TypeError(\"predicate must be a function\");for(var i=arguments[1],r=0;r<n;){var o=t[r];if(e.call(i,o,r,t))return o;r++}}}),Array.isArray||(Array.isArray=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)});var r=Array.from,o=Array.isArray,s=function(e,t){return-1!==e.indexOf(t)}},HDlv:function(e,t,n){\"use strict\";var i=n(\"NCKu\");t.a={components:{bButtonClose:i.a},render:function(e){if(!this.localShow)return e(!1);var t=e(!1);return this.dismissible&&(t=e(\"b-button-close\",{attrs:{\"aria-label\":this.dismissLabel},on:{click:this.dismiss}},[this.$slots.dismiss])),e(\"div\",{class:this.classObject,attrs:{role:\"alert\",\"aria-live\":\"polite\",\"aria-atomic\":!0}},[t,this.$slots.default])},model:{prop:\"show\",event:\"input\"},data:function(){return{countDownTimerId:null,dismissed:!1}},computed:{classObject:function(){return[\"alert\",this.alertVariant,this.dismissible?\"alert-dismissible\":\"\"]},alertVariant:function(){return\"alert-\"+this.variant},localShow:function(){return!this.dismissed&&(this.countDownTimerId||this.show)}},props:{variant:{type:String,default:\"info\"},dismissible:{type:Boolean,default:!1},dismissLabel:{type:String,default:\"Close\"},show:{type:[Boolean,Number],default:!1}},watch:{show:function(){this.showChanged()}},mounted:function(){this.showChanged()},destroyed:function(){this.clearCounter()},methods:{dismiss:function(){this.clearCounter(),this.dismissed=!0,this.$emit(\"dismissed\"),this.$emit(\"input\",!1),\"number\"==typeof this.show?(this.$emit(\"dismiss-count-down\",0),this.$emit(\"input\",0)):this.$emit(\"input\",!1)},clearCounter:function(){this.countDownTimerId&&(clearInterval(this.countDownTimerId),this.countDownTimerId=null)},showChanged:function(){var e=this;if(this.clearCounter(),this.dismissed=!1,!0!==this.show&&!1!==this.show&&null!==this.show&&0!==this.show){var t=this.show;this.countDownTimerId=setInterval(function(){if(t<1)return void e.dismiss();t--,e.$emit(\"dismiss-count-down\",t),e.$emit(\"input\",t)},1e3)}}}}},HHnW:function(e,t,n){\"use strict\";t.a=function(e){return Array.apply(null,{length:e})}},HURm:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"tgmf\"),o=n(\"GKfW\"),s=n(\"OfYj\"),a={name:\"bTabButtonHelper\",props:{content:{type:String,default:\"\"},href:{type:String,default:\"#\"},posInSet:{type:Number,default:null},setSize:{type:Number,default:null},controls:{type:String,default:null},id:{type:String,default:null},active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},linkClass:{default:null},itemClass:{default:null}},render:function(e){var t=this,n=e(\"a\",{class:[\"nav-link\",{active:t.active,disabled:t.disabled},t.linkClass],attrs:{role:\"tab\",tabindex:\"-1\",href:t.href,id:t.id,disabled:t.disabled,\"aria-selected\":t.active?\"true\":\"false\",\"aria-setsize\":t.setSize,\"aria-posinset\":t.posInSet,\"aria-controls\":t.controls},domProps:{innerHTML:t.content},on:{click:t.handleClick,keydown:t.handleClick}});return e(\"li\",{class:[\"nav-item\",t.itemClass],attrs:{role:\"presentation\"}},[n])},methods:{handleClick:function(e){function t(){e.preventDefault(),e.stopPropagation()}if(this.disabled)return void t();\"click\"!==e.type&&e.keyCode!==r.a.ENTER&&e.keyCode!==r.a.SPACE||(t(),this.$emit(\"click\",e))}}};t.a={mixins:[s.a],render:function(e){var t,n=this,r=this.tabs,o=r.map(function(t,i){return e(a,{key:i,props:{content:t.headHtml||t.title,href:t.href,id:t.controlledBy||n.safeId(\"_BV_tab_\"+(i+1)+\"_\"),active:t.localActive,disabled:t.disabled,setSize:r.length,posInSet:i+1,controls:n.safeId(\"_BV_tab_container_\"),linkClass:t.titleLinkClass,itemClass:t.titleItemClass},on:{click:function(e){n.setTab(i)}}})}),s=e(\"ul\",{class:[\"nav\",\"nav-\"+n.navStyle,(t={},i(t,\"card-header-\"+n.navStyle,n.card&&!n.vertical),i(t,\"card-header\",n.card&&n.vertical),i(t,\"h-100\",n.card&&n.vertical),i(t,\"flex-column\",n.vertical),i(t,\"border-bottom-0\",n.vertical),i(t,\"rounded-0\",n.vertical),i(t,\"small\",n.small),t),n.navClass],attrs:{role:\"tablist\",tabindex:\"0\",id:n.safeId(\"_BV_tab_controls_\")},on:{keydown:n.onKeynav}},[o,n.$slots.tabs]);s=e(\"div\",{class:[{\"card-header\":n.card&&!n.vertical&&!(n.end||n.bottom),\"card-footer\":n.card&&!n.vertical&&(n.end||n.bottom),\"col-auto\":n.vertical},n.navWrapperClass]},[s]);var l=void 0;l=r&&r.length?e(!1):e(\"div\",{class:[\"tab-pane\",\"active\",{\"card-body\":n.card}]},n.$slots.empty);var c=e(\"div\",{ref:\"tabsContainer\",class:[\"tab-content\",{col:n.vertical},n.contentClass],attrs:{id:n.safeId(\"_BV_tab_container_\")}},[n.$slots.default,l]);return e(n.tag,{class:[\"tabs\",{row:n.vertical,\"no-gutters\":n.vertical&&n.card}],attrs:{id:n.safeId()}},[n.end||n.bottom?c:e(!1),[s],n.end||n.bottom?e(!1):c])},data:function(){return{currentTab:this.value,tabs:[]}},props:{tag:{type:String,default:\"div\"},card:{type:Boolean,default:!1},small:{type:Boolean,default:!1},value:{type:Number,default:null},pills:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},bottom:{type:Boolean,default:!1},end:{type:Boolean,default:!1},noFade:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},contentClass:{type:[String,Array,Object],default:null},navClass:{type:[String,Array,Object],default:null},navWrapperClass:{type:[String,Array,Object],default:null}},watch:{currentTab:function(e,t){e!==t&&(this.$root.$emit(\"changed::tab\",this,e,this.tabs[e]),this.$emit(\"input\",e),this.tabs[e].$emit(\"click\"))},value:function(e,t){if(e!==t){\"number\"!=typeof t&&(t=0);var n=e<t?-1:1;this.setTab(e,!1,n)}}},computed:{fade:function(){return!this.noFade},navStyle:function(){return this.pills?\"pills\":\"tabs\"}},methods:{sign:function(e){return 0===e?0:e>0?1:-1},onKeynav:function(e){function t(){e.preventDefault(),e.stopPropagation()}var n=e.keyCode,i=e.shiftKey;n===r.a.UP||n===r.a.LEFT?(t(),i?this.setTab(0,!1,1):this.previousTab()):n!==r.a.DWON&&n!==r.a.RIGHT||(t(),i?this.setTab(this.tabs.length-1,!1,-1):this.nextTab())},nextTab:function(){this.setTab(this.currentTab+1,!1,1)},previousTab:function(){this.setTab(this.currentTab-1,!1,-1)},setTab:function(e,t,n){var i=this;if(n=this.sign(n||0),e=e||0,t||e!==this.currentTab){var r=this.tabs[e];if(!r)return void this.$emit(\"input\",this.currentTab);if(r.disabled)return void(n&&this.setTab(e+n,t,n));this.tabs.forEach(function(e){e===r?i.$set(e,\"localActive\",!0):i.$set(e,\"localActive\",!1)}),this.currentTab=e}},updateTabs:function(){this.tabs=this.$children.filter(function(e){return e._isTab});var e=null;if(this.tabs.forEach(function(t,n){t.localActive&&!t.disabled&&(e=n)}),null===e){if(this.currentTab>=this.tabs.length)return void this.setTab(this.tabs.length-1,!0,-1);this.tabs[this.currentTab]&&!this.tabs[this.currentTab].disabled&&(e=this.currentTab)}null===e&&this.tabs.forEach(function(t,n){t.disabled||null!==e||(e=n)}),this.setTab(e||0,!0,0)}},mounted:function(){this.updateTabs(),n.i(o.a)(this.$refs.tabsContainer,this.updateTabs.bind(this),{subtree:!1})}}},Hea7:function(e,t,n){\"use strict\";var i=n(\"vxJQ\");t.a={functional:!0,props:n.i(i.b)(!0),render:i.a.render}},I7Xz:function(e,t,n){\"use strict\";var i=n(\"yCm2\");t.a=i.a},IEZC:function(e,t,n){\"use strict\";n.d(t,\"b\",function(){return a});var i=n(\"2PZM\"),r=n(\"il3A\"),o=n(\"/CDJ\"),s=n(\"etPs\"),a=n.i(o.a)(n.i(s.c)(),{text:{type:String,default:null},active:{type:Boolean,default:!1},href:{type:String,default:\"#\"},ariaCurrent:{type:String,default:\"location\"}});t.a={functional:!0,props:a,render:function(e,t){var o=t.props,l=t.data,c=t.children,u=o.active?\"span\":s.b,h={props:n.i(r.a)(a,o),domProps:{innerHTML:o.text}};return o.active?h.attrs={\"aria-current\":o.ariaCurrent}:h.attrs={href:o.href},e(u,n.i(i.a)(l,h),c)}}},Ibhu:function(e,t,n){var i=n(\"D2L2\"),r=n(\"TcQ7\"),o=n(\"vFc/\")(!1),s=n(\"ax3d\")(\"IE_PROTO\");e.exports=function(e,t){var n,a=r(e),l=0,c=[];for(n in a)n!=s&&i(a,n)&&c.push(n);for(;t.length>l;)i(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},\"Ih+/\":function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),h=\"errs__\"+r,d=e.util.copy(e),f=\"\";d.level++;var p=\"valid\"+d.level,m={},g={},v=e.opts.ownProperties;for(C in s){var y=s[C],b=Array.isArray(y)?g:m;b[C]=y}i+=\"var \"+h+\" = errors;\";var w=e.errorPath;i+=\"var missing\"+r+\";\";for(var C in g)if(b=g[C],b.length){if(i+=\" if ( \"+u+e.util.getProperty(C)+\" !== undefined \",v&&(i+=\" && Object.prototype.hasOwnProperty.call(\"+u+\", '\"+e.util.escapeQuotes(C)+\"') \"),c){i+=\" && ( \";var A=b;if(A)for(var E,x=-1,F=A.length-1;x<F;){E=A[x+=1],x&&(i+=\" || \");var S=e.util.getProperty(E),$=u+S;i+=\" ( ( \"+$+\" === undefined \",v&&(i+=\" || ! Object.prototype.hasOwnProperty.call(\"+u+\", '\"+e.util.escapeQuotes(E)+\"') \"),i+=\") && (missing\"+r+\" = \"+e.util.toQuotedString(e.opts.jsonPointers?E:S)+\") ) \"}i+=\")) {  \";var k=\"missing\"+r,_=\"' + \"+k+\" + '\";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(w,k,!0):w+\" + \"+k);var B=B||[];B.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'dependencies' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { property: '\"+e.util.escapeQuotes(C)+\"', missingProperty: '\"+_+\"', depsCount: \"+b.length+\", deps: '\"+e.util.escapeQuotes(1==b.length?b[0]:b.join(\", \"))+\"' } \",!1!==e.opts.messages&&(i+=\" , message: 'should have \",1==b.length?i+=\"property \"+e.util.escapeQuotes(b[0]):i+=\"properties \"+e.util.escapeQuotes(b.join(\", \")),i+=\" when property \"+e.util.escapeQuotes(C)+\" is present' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var D=i;i=B.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+D+\"]); \":i+=\" validate.errors = [\"+D+\"]; return false; \":i+=\" var err = \"+D+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \"}else{i+=\" ) { \";var T=b;if(T)for(var E,L=-1,O=T.length-1;L<O;){E=T[L+=1];var S=e.util.getProperty(E),_=e.util.escapeQuotes(E),$=u+S;e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(w,E,e.opts.jsonPointers)),i+=\" if ( \"+$+\" === undefined \",v&&(i+=\" || ! Object.prototype.hasOwnProperty.call(\"+u+\", '\"+e.util.escapeQuotes(E)+\"') \"),i+=\") {  var err =   \",!1!==e.createErrors?(i+=\" { keyword: 'dependencies' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { property: '\"+e.util.escapeQuotes(C)+\"', missingProperty: '\"+_+\"', depsCount: \"+b.length+\", deps: '\"+e.util.escapeQuotes(1==b.length?b[0]:b.join(\", \"))+\"' } \",!1!==e.opts.messages&&(i+=\" , message: 'should have \",1==b.length?i+=\"property \"+e.util.escapeQuotes(b[0]):i+=\"properties \"+e.util.escapeQuotes(b.join(\", \")),i+=\" when property \"+e.util.escapeQuotes(C)+\" is present' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \",i+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } \"}}i+=\" }   \",c&&(f+=\"}\",i+=\" else { \")}e.errorPath=w;var R=d.baseId;for(var C in m){var y=m[C];e.util.schemaHasRules(y,e.RULES.all)&&(i+=\" \"+p+\" = true; if ( \"+u+e.util.getProperty(C)+\" !== undefined \",v&&(i+=\" && Object.prototype.hasOwnProperty.call(\"+u+\", '\"+e.util.escapeQuotes(C)+\"') \"),i+=\") { \",d.schema=y,d.schemaPath=a+e.util.getProperty(C),d.errSchemaPath=l+\"/\"+e.util.escapeFragment(C),i+=\"  \"+e.validate(d)+\" \",d.baseId=R,i+=\" }  \",c&&(i+=\" if (\"+p+\") { \",f+=\"}\"))}return c&&(i+=\"   \"+f+\" if (\"+h+\" == errors) {\"),i=e.util.cleanUpCode(i)}},JD2z:function(e,t,n){\"use strict\";var i=n(\"1m3n\"),r=n(\"Teo5\"),o=n(\"IEZC\"),s=n(\"q21c\"),a={bBreadcrumb:i.a,bBreadcrumbItem:r.a,bBreadcrumbLink:o.a},l={install:function(e){n.i(s.c)(e,a)}};n.i(s.a)(l),t.a=l},JWHX:function(e,t,n){\"use strict\";var i=n(\"etPs\"),r=n(\"q21c\"),o={bLink:i.b},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},JjKI:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),h=\"valid\"+r,d=\"errs__\"+r,f=e.util.copy(e);f.level++;var p=\"valid\"+f.level,m=\"i\"+r,g=f.dataLevel=e.dataLevel+1,v=\"data\"+g,y=e.baseId,b=e.util.schemaHasRules(s,e.RULES.all);if(i+=\"var \"+d+\" = errors;var \"+h+\";\",b){var w=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.schema=s,f.schemaPath=a,f.errSchemaPath=l,i+=\" var \"+p+\" = false; for (var \"+m+\" = 0; \"+m+\" < \"+u+\".length; \"+m+\"++) { \",f.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var C=u+\"[\"+m+\"]\";f.dataPathArr[g]=m;var A=e.validate(f);f.baseId=y,e.util.varOccurences(A,v)<2?i+=\" \"+e.util.varReplace(A,v,C)+\" \":i+=\" var \"+v+\" = \"+C+\"; \"+A+\" \",i+=\" if (\"+p+\") break; }  \",e.compositeRule=f.compositeRule=w,i+=\"  if (!\"+p+\") {\"}else i+=\" if (\"+u+\".length == 0) {\";var E=E||[];E.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'contains' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: {} \",!1!==e.opts.messages&&(i+=\" , message: 'should contain a valid item' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var x=i;return i=E.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+x+\"]); \":i+=\" validate.errors = [\"+x+\"]; return false; \":i+=\" var err = \"+x+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",i+=\" } else { \",b&&(i+=\"  errors = \"+d+\"; if (vErrors !== null) { if (\"+d+\") vErrors.length = \"+d+\"; else vErrors = null; } \"),e.opts.allErrors&&(i+=\" } \"),i=e.util.cleanUpCode(i)}},JuiE:function(e,t,n){\"use strict\";var i=n(\"Neo3\"),r=n(\"oLzF\"),o=n(\"t9XS\"),s=n(\"q21c\"),a={bMedia:i.a,bMediaAside:r.a,bMediaBody:o.a},l={install:function(e){n.i(s.c)(e,a)}};n.i(s.a)(l),t.a=l},KSF9:function(e,t,n){\"use strict\";t.a={mounted:function(){\"undefined\"!=typeof document&&document.documentElement.addEventListener(\"click\",this._clickOutListener)},beforeDestroy:function(){\"undefined\"!=typeof document&&document.documentElement.removeEventListener(\"click\",this._clickOutListener)},methods:{_clickOutListener:function(e){this.$el.contains(e.target)||this.clickOutListener&&this.clickOutListener()}}}},KXjV:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r=n(\"il3A\"),o=n(\"/CDJ\"),s=n(\"etPs\"),a=n.i(s.c)();delete a.href.default,delete a.to.default;var l=n.i(o.a)(a,{tag:{type:String,default:\"span\"},variant:{type:String,default:\"secondary\"},pill:{type:Boolean,default:!1}});t.a={functional:!0,props:l,render:function(e,t){var o=t.props,l=t.data,c=t.children,u=o.href||o.to?s.b:o.tag,h={staticClass:\"badge\",class:[o.variant?\"badge-\"+o.variant:\"badge-secondary\",{\"badge-pill\":Boolean(o.pill),active:o.active,disabled:o.disabled}],props:n.i(r.a)(a,o)};return e(u,n.i(i.a)(l,h),c)}}},KpFv:function(e,t,n){\"use strict\";t.a={render:function(e){var t=this,n=e(!1);return t.$slots.default?n=t.$slots.default:t.label?n=e(\"span\",{domProps:{innerHTML:t.label}}):t.computedShowProgress?n=t.progress.toFixed(t.computedPrecision):t.computedShowValue&&(n=t.value.toFixed(t.computedPrecision)),e(\"div\",{class:t.progressBarClasses,style:t.progressBarStyles,attrs:{role:\"progressbar\",\"aria-valuemin\":\"0\",\"aria-valuemax\":t.computedMax.toString(),\"aria-valuenow\":t.value.toFixed(t.computedPrecision)}},[n])},computed:{progressBarClasses:function(){return[\"progress-bar\",this.computedVariant?\"bg-\"+this.computedVariant:\"\",this.computedStriped||this.computedAnimated?\"progress-bar-striped\":\"\",this.computedAnimated?\"progress-bar-animated\":\"\"]},progressBarStyles:function(){return{width:this.value/this.computedMax*100+\"%\"}},progress:function(){var e=Math.pow(10,this.computedPrecision);return Math.round(100*e*this.value/this.computedMax)/e},computedMax:function(){return\"number\"==typeof this.max?this.max:this.$parent.max||100},computedVariant:function(){return this.variant||this.$parent.variant},computedPrecision:function(){return\"number\"==typeof this.precision?this.precision:this.$parent.precision||0},computedStriped:function(){return\"boolean\"==typeof this.striped?this.striped:this.$parent.striped||!1},computedAnimated:function(){return\"boolean\"==typeof this.animated?this.animated:this.$parent.animated||!1},computedShowProgress:function(){return\"boolean\"==typeof this.showProgress?this.showProgress:this.$parent.showProgress||!1},computedShowValue:function(){return\"boolean\"==typeof this.showValue?this.showValue:this.$parent.showValue||!1}},props:{value:{type:Number,default:0},label:{type:String,default:null},max:{type:Number,default:null},precision:{type:Number,default:null},variant:{type:String,default:null},striped:{type:Boolean,default:null},animated:{type:Boolean,default:null},showProgress:{type:Boolean,default:null},showValue:{type:Boolean,default:null}}}},Kz7p:function(e,t,n){\"use strict\";n.d(t,\"n\",function(){return r}),n.d(t,\"f\",function(){return o}),n.d(t,\"l\",function(){return s}),n.d(t,\"v\",function(){return a}),n.d(t,\"q\",function(){return l}),n.d(t,\"a\",function(){return c}),n.d(t,\"s\",function(){return u}),n.d(t,\"j\",function(){return h}),n.d(t,\"t\",function(){return d}),n.d(t,\"b\",function(){return f}),n.d(t,\"c\",function(){return p}),n.d(t,\"e\",function(){return m}),n.d(t,\"g\",function(){return g}),n.d(t,\"k\",function(){return v}),n.d(t,\"d\",function(){return y}),n.d(t,\"u\",function(){return b}),n.d(t,\"r\",function(){return w}),n.d(t,\"m\",function(){return C}),n.d(t,\"p\",function(){return A}),n.d(t,\"o\",function(){return E}),n.d(t,\"h\",function(){return x}),n.d(t,\"i\",function(){return F});var i=n(\"GnGf\"),r=function(e){return e&&e.nodeType===Node.ELEMENT_NODE},o=function(e){return r(e)&&document.body.contains(e)&&e.getBoundingClientRect().height>0&&e.getBoundingClientRect().width>0},s=function(e){return!r(e)||e.disabled||e.classList.contains(\"disabled\")||Boolean(e.getAttribute(\"disabled\"))},a=function(e){return r(e)&&e.offsetHeight},l=function(e,t){return r(t)||(t=document),n.i(i.a)(t.querySelectorAll(e))},c=function(e,t){return r(t)||(t=document),t.querySelector(e)||null},u=function(e,t){if(!r(e))return!1;var n=Element.prototype;return(n.matches||n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector||function(e){for(var t=this,n=l(e,t.document||t.ownerDocument),i=n.length;--i>=0&&n.item(i)!==t;);return i>-1}).call(e,t)},h=function(e,t){if(!r(t))return null;var n=Element.prototype.closest||function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(u(t,e))return t;t=t.parentElement}while(null!==t);return null},i=n.call(t,e);return i===t?null:i},d=function(e){return document.getElementById(/^#/.test(e)?e.slice(1):e)||null},f=function(e,t){t&&r(e)&&e.classList.add(t)},p=function(e,t){t&&r(e)&&e.classList.remove(t)},m=function(e,t){return!(!t||!r(e))&&e.classList.contains(t)},g=function(e,t,n){t&&r(e)&&e.setAttribute(t,n)},v=function(e,t){t&&r(e)&&e.removeAttribute(t)},y=function(e,t){return t&&r(e)?e.getAttribute(t):null},b=function(e,t){return t&&r(e)?e.hasAttribute(t):null},w=function(e){return r(e)?e.getBoundingClientRect():null},C=function(e){return r(e)?window.getComputedStyle(e):{}},A=function(e){if(r(e)){if(!e.getClientRects().length)return{top:0,left:0};var t=w(e),n=e.ownerDocument.defaultView;return{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}}},E=function(e){if(r(e)){var t={top:0,left:0},n=void 0,i=void 0;if(\"fixed\"===C(e).position)n=w(e);else{n=A(e);var o=e.ownerDocument;for(i=e.offsetParent||o.documentElement;i&&(i===o.body||i===o.documentElement)&&\"static\"===C(i).position;)i=i.parentNode;i&&i!==e&&i.nodeType===Node.ELEMENT_NODE&&(t=A(i),t.top+=parseFloat(C(i).borderTopWidth),t.left+=parseFloat(C(i).borderLeftWidth))}return{top:n.top-t.top-parseFloat(C(e).marginTop),left:n.left-t.left-parseFloat(C(e).marginLeft)}}},x=function(e,t,n){e&&e.addEventListener&&e.addEventListener(t,n)},F=function(e,t,n){e&&e.removeEventListener&&e.removeEventListener(t,n)}},LGuY:function(e,t){e.exports=function(){throw new Error(\"define cannot be used indirect\")}},LHeC:function(e,t,n){\"use strict\";var i=n(\"czjy\"),r=n(\"2PZM\");t.a={functional:!0,props:{id:{type:String,default:null}},render:function(e,t){var o=t.props,s=t.data,a=t.children;return e(i.a,n.i(r.a)(s,{attrs:{id:o.id},props:{inline:!0}}),a)}}},Lzqu:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={tag:{type:String,default:\"div\"}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data;return e(r.tag,n.i(i.a)(o,{staticClass:\"dropdown-divider\",attrs:{role:\"separator\"}}))}}},MSRa:function(e,t){ace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\"],function(e,t,n){\"use strict\";var i=e(\"../lib/dom\"),r=e(\"../lib/lang\"),o=e(\"../lib/event\"),s=e(\"../keyboard/hash_handler\").HashHandler,a=e(\"../lib/keys\");i.importCssString('.ace_search {background-color: #ddd;color: #666;border: 1px solid #cbcbcb;border-top: 0 none;overflow: hidden;margin: 0;padding: 4px 6px 0 4px;position: absolute;top: 0;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {margin: 0 20px 4px 0;overflow: hidden;line-height: 1.9;}.ace_replace_form {margin-right: 0;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {border-radius: 3px 0 0 3px;background-color: white;color: black;border: 1px solid #cbcbcb;border-right: 0 none;box-sizing: border-box!important;outline: 0;padding: 0;font-size: inherit;margin: 0;line-height: inherit;padding: 0 6px;min-width: 17em;vertical-align: top;}.ace_searchbtn {border: 1px solid #cbcbcb;line-height: inherit;display: inline-block;padding: 0 6px;background: #fff;border-right: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;margin: 0;position: relative;box-sizing: content-box!important;color: #666;}.ace_searchbtn:last-child {border-radius: 0 3px 3px 0;border-right: 1px solid #cbcbcb;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn:hover {background-color: #eef1f6;}.ace_searchbtn.prev, .ace_searchbtn.next {padding: 0px 0.7em}.ace_searchbtn.prev:after, .ace_searchbtn.next:after {content: \"\";border: solid 2px #888;width: 0.5em;height: 0.5em;border-width:  2px 0 0 2px;display:inline-block;transform: rotate(-45deg);}.ace_searchbtn.next:after {border-width: 0 2px 2px 0 ;}.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;font: 16px/16px Arial;padding: 0;height: 14px;width: 14px;top: 9px;right: 7px;position: absolute;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;box-sizing:    border-box!important;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;clear: both;}.ace_search_counter {float: left;font-family: arial;padding: 0 8px;}',\"ace_searchbox\");var l='<div class=\"ace_search right\">    <span action=\"hide\" class=\"ace_searchbtn_close\"></span>    <div class=\"ace_search_form\">        <input class=\"ace_search_field\" placeholder=\"Search for\" spellcheck=\"false\"></input>        <span action=\"findPrev\" class=\"ace_searchbtn prev\"></span>        <span action=\"findNext\" class=\"ace_searchbtn next\"></span>        <span action=\"findAll\" class=\"ace_searchbtn\" title=\"Alt-Enter\">All</span>    </div>    <div class=\"ace_replace_form\">        <input class=\"ace_search_field\" placeholder=\"Replace with\" spellcheck=\"false\"></input>        <span action=\"replaceAndFindNext\" class=\"ace_searchbtn\">Replace</span>        <span action=\"replaceAll\" class=\"ace_searchbtn\">All</span>    </div>    <div class=\"ace_search_options\">        <span action=\"toggleReplace\" class=\"ace_button\" title=\"Toggel Replace mode\"            style=\"float:left;margin-top:-2px;padding:0 5px;\">+</span>        <span class=\"ace_search_counter\"></span>        <span action=\"toggleRegexpMode\" class=\"ace_button\" title=\"RegExp Search\">.*</span>        <span action=\"toggleCaseSensitive\" class=\"ace_button\" title=\"CaseSensitive Search\">Aa</span>        <span action=\"toggleWholeWords\" class=\"ace_button\" title=\"Whole Word Search\">\\\\b</span>        <span action=\"searchInSelection\" class=\"ace_button\" title=\"Search In Selection\">S</span>    </div></div>'.replace(/> +/g,\">\"),c=function(e,t,n){var r=i.createElement(\"div\");r.innerHTML=l,this.element=r.firstChild,this.setSession=this.setSession.bind(this),this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.renderer.scroller.appendChild(this.element),this.editor=e},this.setSession=function(e){this.searchRange=null,this.$syncOptions(!0)},this.$initElements=function(e){this.searchBox=e.querySelector(\".ace_search_form\"),this.replaceBox=e.querySelector(\".ace_replace_form\"),this.searchOption=e.querySelector(\"[action=searchInSelection]\"),this.replaceOption=e.querySelector(\"[action=toggleReplace]\"),this.regExpOption=e.querySelector(\"[action=toggleRegexpMode]\"),this.caseSensitiveOption=e.querySelector(\"[action=toggleCaseSensitive]\"),this.wholeWordOption=e.querySelector(\"[action=toggleWholeWords]\"),this.searchInput=this.searchBox.querySelector(\".ace_search_field\"),this.replaceInput=this.replaceBox.querySelector(\".ace_search_field\"),this.searchCounter=e.querySelector(\".ace_search_counter\")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;o.addListener(e,\"mousedown\",function(e){setTimeout(function(){t.activeInput.focus()},0),o.stopPropagation(e)}),o.addListener(e,\"click\",function(e){var n=e.target||e.srcElement,i=n.getAttribute(\"action\");i&&t[i]?t[i]():t.$searchBarKb.commands[i]&&t.$searchBarKb.commands[i].exec(t),o.stopPropagation(e)}),o.addCommandKeyListener(e,function(e,n,i){var r=a.keyCodeToString(i),s=t.$searchBarKb.findKeyCommand(n,r);s&&s.exec&&(s.exec(t),o.stopEvent(e))}),this.$onChange=r.delayedCall(function(){t.find(!1,!1)}),o.addListener(this.searchInput,\"input\",function(){t.$onChange.schedule(20)}),o.addListener(this.searchInput,\"focus\",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),o.addListener(this.replaceInput,\"focus\",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new s([{bindKey:\"Esc\",name:\"closeSearchBar\",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new s,this.$searchBarKb.bindKeys({\"Ctrl-f|Command-f\":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?\"\":\"none\",e.replaceOption.checked=!1,e.$syncOptions(),e.searchInput.focus()},\"Ctrl-H|Command-Option-F\":function(e){e.replaceOption.checked=!0,e.$syncOptions(),e.replaceInput.focus()},\"Ctrl-G|Command-G\":function(e){e.findNext()},\"Ctrl-Shift-G|Command-Shift-G\":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},\"Shift-Return\":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},\"Alt-Return\":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:\"toggleRegexpMode\",bindKey:{win:\"Alt-R|Alt-/\",mac:\"Ctrl-Alt-R|Ctrl-Alt-/\"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:\"toggleCaseSensitive\",bindKey:{win:\"Alt-C|Alt-I\",mac:\"Ctrl-Alt-R|Ctrl-Alt-I\"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:\"toggleWholeWords\",bindKey:{win:\"Alt-B|Alt-W\",mac:\"Ctrl-Alt-B|Ctrl-Alt-W\"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}},{name:\"toggleReplace\",exec:function(e){e.replaceOption.checked=!e.replaceOption.checked,e.$syncOptions()}},{name:\"searchInSelection\",exec:function(e){e.searchOption.checked=!e.searchRange,e.setSearchRange(e.searchOption.checked&&e.editor.getSelectionRange()),e.$syncOptions()}}]),this.setSearchRange=function(e){this.searchRange=e,e?this.searchRangeMarker=this.editor.session.addMarker(e,\"ace_active-line\"):this.searchRangeMarker&&(this.editor.session.removeMarker(this.searchRangeMarker),this.searchRangeMarker=null)},this.$syncOptions=function(e){i.setCssClass(this.replaceOption,\"checked\",this.searchRange),i.setCssClass(this.searchOption,\"checked\",this.searchOption.checked),this.replaceOption.textContent=this.replaceOption.checked?\"-\":\"+\",i.setCssClass(this.regExpOption,\"checked\",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,\"checked\",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,\"checked\",this.caseSensitiveOption.checked),this.replaceBox.style.display=this.replaceOption.checked?\"\":\"none\",this.find(!1,!1,e)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,n){var r=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:n,range:this.searchRange}),o=!r&&this.searchInput.value;i.setCssClass(this.searchBox,\"ace_nomatch\",o),this.editor._emit(\"findSearchBox\",{match:!o}),this.highlight(),this.updateCounter()},this.updateCounter=function(){var e=this.editor,t=e.$search.$options.re,n=0,i=0;if(t){var r=this.searchRange?e.session.getTextRange(this.searchRange):e.getValue(),o=e.session.doc.positionToIndex(e.selection.anchor);this.searchRange&&(o-=e.session.doc.positionToIndex(this.searchRange.start));for(var s,a=t.lastIndex=0;(s=t.exec(r))&&(n++,a=s.index,a<=o&&i++,!(n>999))&&(s[0]||(t.lastIndex=a+=1,!(a>=r.length))););}this.searchCounter.textContent=i+\" of \"+(n>999?\"999+\":n)},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;i.setCssClass(this.searchBox,\"ace_nomatch\",t),this.editor._emit(\"findSearchBox\",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.active=!1,this.setSearchRange(null),this.editor.off(\"changeSession\",this.setSession),this.element.style.display=\"none\",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.active=!0,this.editor.on(\"changeSession\",this.setSession),this.element.style.display=\"\",this.replaceOption.checked=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb),this.$syncOptions(!0)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(c.prototype),t.SearchBox=c,t.Search=function(e,t){(e.searchBox||new c(e)).show(e.session.getTextRange(),t)}}),function(){ace.acequire([\"ace/ext/searchbox\"],function(){})}()},MU5D:function(e,t,n){var i=n(\"R9M2\");e.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(e){return\"String\"==i(e)?e.split(\"\"):Object(e)}},Mjd8:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r=n(\"etPs\"),o=n.i(r.c)();t.a={functional:!0,props:o,render:function(e,t){var o=t.props,s=t.data,a=t.children;return e(r.b,n.i(i.a)(s,{props:o,staticClass:\"dropdown-item\",attrs:{role:\"menuitem\"}}),a)}}},MmMw:function(e,t,n){var i=n(\"EqjI\");e.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&\"function\"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if(\"function\"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&\"function\"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError(\"Can't convert object to primitive value\")}},MsCo:function(e,t,n){(function(e,i){var r;!function(o){function s(e){throw new RangeError(T[e])}function a(e,t){for(var n=e.length,i=[];n--;)i[n]=t(e[n]);return i}function l(e,t){var n=e.split(\"@\"),i=\"\";return n.length>1&&(i=n[0]+\"@\",e=n[1]),e=e.replace(D,\".\"),i+a(e.split(\".\"),t).join(\".\")}function c(e){for(var t,n,i=[],r=0,o=e.length;r<o;)t=e.charCodeAt(r++),t>=55296&&t<=56319&&r<o?(n=e.charCodeAt(r++),56320==(64512&n)?i.push(((1023&t)<<10)+(1023&n)+65536):(i.push(t),r--)):i.push(t);return i}function u(e){return a(e,function(e){var t=\"\";return e>65535&&(e-=65536,t+=R(e>>>10&1023|55296),e=56320|1023&e),t+=R(e)}).join(\"\")}function h(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:C}function d(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function f(e,t,n){var i=0;for(e=n?O(e/F):e>>1,e+=O(e/t);e>L*E>>1;i+=C)e=O(e/L);return O(i+(L+1)*e/(e+x))}function p(e){var t,n,i,r,o,a,l,c,d,p,m=[],g=e.length,v=0,y=$,b=S;for(n=e.lastIndexOf(k),n<0&&(n=0),i=0;i<n;++i)e.charCodeAt(i)>=128&&s(\"not-basic\"),m.push(e.charCodeAt(i));for(r=n>0?n+1:0;r<g;){for(o=v,a=1,l=C;r>=g&&s(\"invalid-input\"),c=h(e.charCodeAt(r++)),(c>=C||c>O((w-v)/a))&&s(\"overflow\"),v+=c*a,d=l<=b?A:l>=b+E?E:l-b,!(c<d);l+=C)p=C-d,a>O(w/p)&&s(\"overflow\"),a*=p;t=m.length+1,b=f(v-o,t,0==o),O(v/t)>w-y&&s(\"overflow\"),y+=O(v/t),v%=t,m.splice(v++,0,y)}return u(m)}function m(e){var t,n,i,r,o,a,l,u,h,p,m,g,v,y,b,x=[];for(e=c(e),g=e.length,t=$,n=0,o=S,a=0;a<g;++a)(m=e[a])<128&&x.push(R(m));for(i=r=x.length,r&&x.push(k);i<g;){for(l=w,a=0;a<g;++a)(m=e[a])>=t&&m<l&&(l=m);for(v=i+1,l-t>O((w-n)/v)&&s(\"overflow\"),n+=(l-t)*v,t=l,a=0;a<g;++a)if(m=e[a],m<t&&++n>w&&s(\"overflow\"),m==t){for(u=n,h=C;p=h<=o?A:h>=o+E?E:h-o,!(u<p);h+=C)b=u-p,y=C-p,x.push(R(d(p+b%y,0))),u=O(b/y);x.push(R(d(u,0))),o=f(n,v,i==r),n=0,++i}++n,++t}return x.join(\"\")}function g(e){return l(e,function(e){return _.test(e)?p(e.slice(4).toLowerCase()):e})}function v(e){return l(e,function(e){return B.test(e)?\"xn--\"+m(e):e})}var y=(\"object\"==typeof t&&t&&t.nodeType,\"object\"==typeof e&&e&&e.nodeType,\"object\"==typeof i&&i);var b,w=2147483647,C=36,A=1,E=26,x=38,F=700,S=72,$=128,k=\"-\",_=/^xn--/,B=/[^\\x20-\\x7E]/,D=/[\\x2E\\u3002\\uFF0E\\uFF61]/g,T={overflow:\"Overflow: input needs wider integers to process\",\"not-basic\":\"Illegal input >= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},L=C-A,O=Math.floor,R=String.fromCharCode;b={version:\"1.4.1\",ucs2:{decode:c,encode:u},decode:p,encode:m,toASCII:v,toUnicode:g},void 0!==(r=function(){return b}.call(t,n,t,e))&&(e.exports=r)}()}).call(t,n(\"3IRH\")(e),n(\"DuR2\"))},NCKu:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"2PZM\"),o={disabled:{type:Boolean,default:!1},ariaLabel:{type:String,default:\"Close\"},textVariant:{type:String,default:null}};t.a={functional:!0,props:o,render:function(e,t){var o=t.props,s=t.data,a=(t.listeners,t.slots),l={staticClass:\"close\",class:i({},\"text-\"+o.textVariant,o.textVariant),attrs:{type:\"button\",disabled:o.disabled,\"aria-label\":o.ariaLabel?String(o.ariaLabel):null},on:{click:function(e){o.disabled&&e instanceof Event&&(e.stopPropagation(),e.preventDefault())}}};return a().default||(l.domProps={innerHTML:\"&times;\"}),e(\"button\",n.i(r.a)(s,l),a().default)}}},NbQv:function(e,t,n){ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],function(e,t,n){\"use strict\";var i=e(\"../lib/oop\"),r=e(\"./text_highlight_rules\").TextHighlightRules,o=function(){this.$rules={start:[{token:\"variable\",regex:'[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'},{token:\"string\",regex:'\"',next:\"string\"},{token:\"constant.numeric\",regex:\"0[xX][0-9a-fA-F]+\\\\b\"},{token:\"constant.numeric\",regex:\"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"},{token:\"constant.language.boolean\",regex:\"(?:true|false)\\\\b\"},{token:\"text\",regex:\"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"},{token:\"comment\",regex:\"\\\\/\\\\/.*$\"},{token:\"comment.start\",regex:\"\\\\/\\\\*\",next:\"comment\"},{token:\"paren.lparen\",regex:\"[[({]\"},{token:\"paren.rparen\",regex:\"[\\\\])}]\"},{token:\"text\",regex:\"\\\\s+\"}],string:[{token:\"constant.language.escape\",regex:/\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/},{token:\"string\",regex:'\"|$',next:\"start\"},{defaultToken:\"string\"}],comment:[{token:\"comment.end\",regex:\"\\\\*\\\\/\",next:\"start\"},{defaultToken:\"comment\"}]}};i.inherits(o,r),t.JsonHighlightRules=o}),ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){\"use strict\";var i=e(\"../range\").Range,r=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\\s+$/.test(e)&&/^\\s*\\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t),r=n.match(/^(\\s*\\})/);if(!r)return 0;var o=r[1].length,s=e.findMatchingBracket({row:t,column:o});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new i(t,0,t,o-1),a)},this.$getIndent=function(e){return e.match(/^\\s*/)[0]}}).call(r.prototype),t.MatchingBraceOutdent=r}),ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"],function(e,t,n){\"use strict\";var i=e(\"../../lib/oop\"),r=e(\"../../range\").Range,o=e(\"./fold_mode\").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/,\"|\"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/,\"|\"+e.end)))};i.inherits(s,o),function(){this.foldingStartMarker=/([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/,this.foldingStopMarker=/^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/,this.singleLineBlockCommentRe=/^\\s*(\\/\\*).*\\*\\/\\s*$/,this.tripleStarBlockCommentRe=/^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/,this.startRegionRe=/^\\s*(\\/\\*|\\/\\/)#?region\\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return\"\";var r=this._getFoldWidgetBase(e,t,n);return!r&&this.startRegionRe.test(i)?\"start\":r},this.getFoldWidgetRange=function(e,t,n,i){var r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);var o=r.match(this.foldingStartMarker);if(o){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,s);var a=e.getCommentFoldRange(n,s+o[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):\"all\"!=t&&(a=null)),a}if(\"markbegin\"!==t){var o=r.match(this.foldingStopMarker);if(o){var s=o.index+o[0].length;return o[1]?this.closingBracketBlock(e,o[1],n,s):e.getCommentFoldRange(n,s,-1)}}},this.getSectionRange=function(e,t){var n=e.getLine(t),i=n.search(/\\S/),o=t,s=n.length;t+=1;for(var a=t,l=e.getLength();++t<l;){n=e.getLine(t);var c=n.search(/\\S/);if(-1!==c){if(i>c)break;var u=this.getFoldWidgetRange(e,\"all\",t);if(u){if(u.start.row<=o)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new r(o,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\\s*$/),o=e.getLength(),s=n,a=/^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/,l=1;++n<o;){t=e.getLine(n);var c=a.exec(t);if(c&&(c[1]?l--:l++,!l))break}var u=n;if(u>s)return new r(s,i,u,t.length)}}.call(s.prototype)}),ace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"],function(e,t,i){\"use strict\";var r=e(\"../lib/oop\"),o=e(\"./text\").Mode,s=e(\"./json_highlight_rules\").JsonHighlightRules,a=e(\"./matching_brace_outdent\").MatchingBraceOutdent,l=e(\"./behaviour/cstyle\").CstyleBehaviour,c=e(\"./folding/cstyle\").FoldMode,u=e(\"../worker/worker_client\").WorkerClient,h=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};r.inherits(h,o),function(){this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t);if(\"start\"==e){t.match(/^.*[\\{\\(\\[]\\s*$/)&&(i+=n)}return i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u([\"ace\"],n(\"qxK6\"),\"JsonWorker\");return t.attachToDocument(e.getDocument()),t.on(\"annotate\",function(t){e.setAnnotations(t.data)}),t.on(\"terminate\",function(){e.clearAnnotations()}),t},this.$id=\"ace/mode/json\"}.call(h.prototype),t.Mode=h})},Neo3:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r=n(\"t9XS\"),o=n(\"oLzF\"),s={tag:{type:String,default:\"div\"},rightAlign:{type:Boolean,default:!1},verticalAlign:{type:String,default:\"top\"},noBody:{type:Boolean,default:!1}};t.a={functional:!0,props:s,render:function(e,t){var s=t.props,a=t.data,l=t.slots,c=t.children,u=s.noBody?c:[],h=l();return s.noBody||(h.aside&&!s.rightAlign&&u.push(e(o.a,{staticClass:\"mr-3\",props:{verticalAlign:s.verticalAlign}},h.aside)),u.push(e(r.a,h.default)),h.aside&&s.rightAlign&&u.push(e(o.a,{staticClass:\"ml-3\",props:{verticalAlign:s.verticalAlign}},h.aside))),e(s.tag,n.i(i.a)(a,{staticClass:\"media\"}),u)}}},NpIQ:function(e,t){t.f={}.propertyIsEnumerable},NpfB:function(e,t,n){\"use strict\";var i=n(\"E8q/\"),r=n(\"NCKu\"),o=n(\"q21c\"),s={bButton:i.a,bBtn:i.a,bButtonClose:r.a,bBtnClose:r.a},a={install:function(e){n.i(o.c)(e,s)}};n.i(o.a)(a),t.a=a},Nyfp:function(e,t,n){\"use strict\";function i(){this.locked=!1}i.prototype.highlight=function(e){this.locked||(this.node!=e&&(this.node&&this.node.setHighlight(!1),this.node=e,this.node.setHighlight(!0)),this._cancelUnhighlight())},i.prototype.unhighlight=function(){if(!this.locked){var e=this;this.node&&(this._cancelUnhighlight(),this.unhighlightTimer=setTimeout(function(){e.node.setHighlight(!1),e.node=void 0,e.unhighlightTimer=void 0},0))}},i.prototype._cancelUnhighlight=function(){this.unhighlightTimer&&(clearTimeout(this.unhighlightTimer),this.unhighlightTimer=void 0)},i.prototype.lock=function(){this.locked=!0},i.prototype.unlock=function(){this.locked=!1},e.exports=i},ON07:function(e,t,n){var i=n(\"EqjI\"),r=n(\"7KvD\").document,o=i(r)&&i(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},OfYj:function(e,t,n){\"use strict\";t.a={props:{id:{type:String,default:null}},methods:{safeId:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",t=this.id||this.localId_||null;return t?(e=String(e).replace(/\\s+/g,\"_\"),e?t+\"_\"+e:t):null}},computed:{localId_:function(){if(!this.$isServer&&!this.id&&void 0!==this._uid)return\"__BVID__\"+this._uid}}}},OmfC:function(e,t,n){\"use strict\";e.exports={$ref:n(\"v2Bs\"),allOf:n(\"dsqM\"),anyOf:n(\"no5d\"),const:n(\"A3jq\"),contains:n(\"JjKI\"),dependencies:n(\"Ih+/\"),enum:n(\"rmpQ\"),format:n(\"6nDI\"),items:n(\"qUfZ\"),maximum:n(\"p328\"),minimum:n(\"p328\"),maxItems:n(\"AgIa\"),minItems:n(\"AgIa\"),maxLength:n(\"7cFV\"),minLength:n(\"7cFV\"),maxProperties:n(\"VXBj\"),minProperties:n(\"VXBj\"),multipleOf:n(\"DraI\"),not:n(\"wKyt\"),oneOf:n(\"56M6\"),pattern:n(\"DJjr\"),properties:n(\"+7mA\"),propertyNames:n(\"oiJL\"),required:n(\"Qk+r\"),uniqueItems:n(\"hFtj\"),validate:n(\"3pcS\")}},POcz:function(e,t,n){\"use strict\";function i(e,t,n){function o(e){var t=e.$schema;return t&&!a.getSchema(t)?i.call(a,{$ref:t},!0):Promise.resolve()}function s(e){try{return a._compile(e)}catch(n){if(n instanceof r)return function(n){function i(){delete a._loadingSchemas[l]}function r(e){return a._refs[e]||a._schemas[e]}var l=n.missingSchema;if(r(l))throw new Error(\"Schema \"+l+\" is loaded but \"+n.missingRef+\" cannot be resolved\");var c=a._loadingSchemas[l];return c||(c=a._loadingSchemas[l]=a._opts.loadSchema(l),c.then(i,i)),c.then(function(e){if(!r(l))return o(e).then(function(){r(l)||a.addSchema(e,l,void 0,t)})}).then(function(){return s(e)})}(n);throw n}}var a=this;if(\"function\"!=typeof this._opts.loadSchema)throw new Error(\"options.loadSchema should be a function\");\"function\"==typeof t&&(n=t,t=void 0);var l=o(e).then(function(){var n=a._addSchema(e,void 0,t);return n.validate||s(n)});return n&&l.then(function(e){n(null,e)},n),l}var r=n(\"c0yX\").MissingRef;e.exports=i},PxEr:function(e,t,n){\"use strict\";var i=n(\"5osV\"),r=n(\"Kz7p\"),o={click:!0};t.a={bind:function(e,t,s){n.i(i.a)(s,t,o,function(e){var t=e.targets,n=e.vnode;t.forEach(function(e){n.context.$root.$emit(\"bv::show::modal\",e,n.elm)})}),\"BUTTON\"!==e.tagName&&n.i(r.g)(e,\"role\",\"button\")}}},QRG4:function(e,t,n){var i=n(\"UuGF\"),r=Math.min;e.exports=function(e){return e>0?r(i(e),9007199254740991):0}},QjOx:function(e,t,n){\"use strict\";var i=n(\"OfYj\"),r=n(\"ddAL\");t.a={mixins:[i.a,r.a],render:function(e){var t=this,n=e(\"a\",{class:t.toggleClasses,ref:\"toggle\",attrs:{href:\"#\",id:t.safeId(\"_BV_button_\"),disabled:t.disabled,\"aria-haspopup\":\"true\",\"aria-expanded\":t.visible?\"true\":\"false\"},on:{click:t.toggle,keydown:t.toggle}},[t.$slots[\"button-content\"]||t.$slots.text||e(\"span\",{domProps:{innerHTML:t.text}})]),i=e(\"div\",{class:t.menuClasses,ref:\"menu\",attrs:{\"aria-labelledby\":t.safeId(\"_BV_button_\")},on:{mouseover:t.onMouseOver,keydown:t.onKeydown}},[this.$slots.default]);return e(\"li\",{attrs:{id:t.safeId()},class:t.dropdownClasses},[n,i])},computed:{isNav:function(){return!0},dropdownClasses:function(){return[\"nav-item\",\"b-nav-dropdown\",\"dropdown\",this.dropup?\"dropup\":\"\",this.visible?\"show\":\"\"]},toggleClasses:function(){return[\"nav-link\",this.noCaret?\"\":\"dropdown-toggle\",this.disabled?\"disabled\":\"\",this.extraToggleClasses?this.extraToggleClasses:\"\"]},menuClasses:function(){return[\"dropdown-menu\",this.right?\"dropdown-menu-right\":\"dropdown-menu-left\",this.visible?\"show\":\"\"]}},props:{noCaret:{type:Boolean,default:!1},extraToggleClasses:{type:String,default:\"\"},role:{type:String,default:\"menu\"}}}},\"Qk+r\":function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),h=\"valid\"+r,d=e.opts.$data&&s&&s.$data;d&&(i+=\" var schema\"+r+\" = \"+e.util.getData(s.$data,o,e.dataPathArr)+\"; \");var f=\"schema\"+r;if(!d)if(s.length<e.opts.loopRequired&&e.schema.properties&&Object.keys(e.schema.properties).length){var p=[],m=s;if(m)for(var g,v=-1,y=m.length-1;v<y;){g=m[v+=1];var b=e.schema.properties[g];b&&e.util.schemaHasRules(b,e.RULES.all)||(p[p.length]=g)}}else var p=s;if(d||p.length){var w=e.errorPath,C=d||p.length>=e.opts.loopRequired,A=e.opts.ownProperties;if(c)if(i+=\" var missing\"+r+\"; \",C){d||(i+=\" var \"+f+\" = validate.schema\"+a+\"; \");var E=\"i\"+r,x=\"schema\"+r+\"[\"+E+\"]\",F=\"' + \"+x+\" + '\";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(w,x,e.opts.jsonPointers)),i+=\" var \"+h+\" = true; \",d&&(i+=\" if (schema\"+r+\" === undefined) \"+h+\" = true; else if (!Array.isArray(schema\"+r+\")) \"+h+\" = false; else {\"),i+=\" for (var \"+E+\" = 0; \"+E+\" < \"+f+\".length; \"+E+\"++) { \"+h+\" = \"+u+\"[\"+f+\"[\"+E+\"]] !== undefined \",A&&(i+=\" &&   Object.prototype.hasOwnProperty.call(\"+u+\", \"+f+\"[\"+E+\"]) \"),i+=\"; if (!\"+h+\") break; } \",d&&(i+=\"  }  \"),i+=\"  if (!\"+h+\") {   \";var S=S||[];S.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { missingProperty: '\"+F+\"' } \",!1!==e.opts.messages&&(i+=\" , message: '\",e.opts._errorDataPathProperty?i+=\"is a required property\":i+=\"should have required property \\\\'\"+F+\"\\\\'\",i+=\"' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var $=i;i=S.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+$+\"]); \":i+=\" validate.errors = [\"+$+\"]; return false; \":i+=\" var err = \"+$+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",i+=\" } else { \"}else{i+=\" if ( \";var k=p;if(k)for(var _,E=-1,B=k.length-1;E<B;){_=k[E+=1],E&&(i+=\" || \");var D=e.util.getProperty(_),T=u+D;i+=\" ( ( \"+T+\" === undefined \",A&&(i+=\" || ! Object.prototype.hasOwnProperty.call(\"+u+\", '\"+e.util.escapeQuotes(_)+\"') \"),i+=\") && (missing\"+r+\" = \"+e.util.toQuotedString(e.opts.jsonPointers?_:D)+\") ) \"}i+=\") {  \";var x=\"missing\"+r,F=\"' + \"+x+\" + '\";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(w,x,!0):w+\" + \"+x);var S=S||[];S.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { missingProperty: '\"+F+\"' } \",!1!==e.opts.messages&&(i+=\" , message: '\",e.opts._errorDataPathProperty?i+=\"is a required property\":i+=\"should have required property \\\\'\"+F+\"\\\\'\",i+=\"' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var $=i;i=S.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+$+\"]); \":i+=\" validate.errors = [\"+$+\"]; return false; \":i+=\" var err = \"+$+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",i+=\" } else { \"}else if(C){d||(i+=\" var \"+f+\" = validate.schema\"+a+\"; \");var E=\"i\"+r,x=\"schema\"+r+\"[\"+E+\"]\",F=\"' + \"+x+\" + '\";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(w,x,e.opts.jsonPointers)),d&&(i+=\" if (\"+f+\" && !Array.isArray(\"+f+\")) {  var err =   \",!1!==e.createErrors?(i+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { missingProperty: '\"+F+\"' } \",!1!==e.opts.messages&&(i+=\" , message: '\",e.opts._errorDataPathProperty?i+=\"is a required property\":i+=\"should have required property \\\\'\"+F+\"\\\\'\",i+=\"' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \",i+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (\"+f+\" !== undefined) { \"),i+=\" for (var \"+E+\" = 0; \"+E+\" < \"+f+\".length; \"+E+\"++) { if (\"+u+\"[\"+f+\"[\"+E+\"]] === undefined \",A&&(i+=\" || ! Object.prototype.hasOwnProperty.call(\"+u+\", \"+f+\"[\"+E+\"]) \"),i+=\") {  var err =   \",!1!==e.createErrors?(i+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { missingProperty: '\"+F+\"' } \",!1!==e.opts.messages&&(i+=\" , message: '\",e.opts._errorDataPathProperty?i+=\"is a required property\":i+=\"should have required property \\\\'\"+F+\"\\\\'\",i+=\"' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \",i+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } \",d&&(i+=\"  }  \")}else{var L=p;if(L)for(var _,O=-1,R=L.length-1;O<R;){_=L[O+=1];var D=e.util.getProperty(_),F=e.util.escapeQuotes(_),T=u+D;e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(w,_,e.opts.jsonPointers)),i+=\" if ( \"+T+\" === undefined \",A&&(i+=\" || ! Object.prototype.hasOwnProperty.call(\"+u+\", '\"+e.util.escapeQuotes(_)+\"') \"),i+=\") {  var err =   \",!1!==e.createErrors?(i+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { missingProperty: '\"+F+\"' } \",!1!==e.opts.messages&&(i+=\" , message: '\",e.opts._errorDataPathProperty?i+=\"is a required property\":i+=\"should have required property \\\\'\"+F+\"\\\\'\",i+=\"' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \",i+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } \"}}e.errorPath=w}else c&&(i+=\" if (true) {\");return i}},QmdE:function(e,t,n){\"use strict\";var i=n(\"RVBp\");t.parse=function(e){try{return JSON.parse(e)}catch(n){throw t.validate(e),n}},t.sanitize=function(e){function t(){return e.charAt(s)}function n(){return e.charAt(s+1)}function i(){return e.charAt(s-1)}function r(n){o.push('\"'),s++;for(var r=t();s<e.length&&r!==n;)'\"'===r&&\"\\\\\"!==i()?o.push('\\\\\"'):l.hasOwnProperty(r)?o.push(l[r]):\"\\\\\"===r?(s++,r=t(),\"'\"!==r&&o.push(\"\\\\\"),o.push(r)):o.push(r),s++,r=t();r===n&&(o.push('\"'),s++)}var o=[],s=0,a=e.match(/^\\s*(\\/\\*(.|[\\r\\n])*?\\*\\/)?\\s*[\\da-zA-Z_$]+\\s*\\(([\\s\\S]*)\\)\\s*;?\\s*$/);a&&(e=a[3]);for(var l={\"\\b\":\"\\\\b\",\"\\f\":\"\\\\f\",\"\\n\":\"\\\\n\",\"\\r\":\"\\\\r\",\"\\t\":\"\\\\t\"};s<e.length;){var c=t();\"/\"===c&&\"*\"===n()?function(){for(s+=2;s<e.length&&(\"*\"!==t()||\"/\"!==n());)s++;s+=2}():\"/\"===c&&\"/\"===n()?function(){for(s+=2;s<e.length&&\"\\n\"!==t();)s++}():\" \"===c||c>=\" \"&&c<=\" \"||\" \"===c||\" \"===c||\"　\"===c?(o.push(\" \"),s++):\"'\"===c?r(\"'\"):'\"'===c?r('\"'):\"`\"===c?r(\"´\"):\"‘\"===c?r(\"’\"):\"“\"===c?r(\"”\"):/[a-zA-Z_$]/.test(c)&&-1!==[\"{\",\",\"].indexOf(function(){for(var e=o.length-1;e>=0;){var t=o[e];if(\" \"!==t&&\"\\n\"!==t&&\"\\r\"!==t&&\"\\t\"!==t)return t;e--}return\"\"}())?function(){for(var e=[\"null\",\"true\",\"false\"],n=\"\",i=t(),r=/[a-zA-Z_$\\d]/;r.test(i);)n+=i,s++,i=t();-1===e.indexOf(n)?o.push('\"'+n+'\"'):o.push(n)}():(o.push(c),s++)}return o.join(\"\")},t.escapeUnicodeChars=function(e){return e.replace(/[\\u007F-\\uFFFF]/g,function(e){return\"\\\\u\"+(\"0000\"+e.charCodeAt(0).toString(16)).slice(-4)})},t.validate=function(e){void 0!==i?i.parse(e):JSON.parse(e)},t.extend=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},t.clear=function(e){for(var t in e)e.hasOwnProperty(t)&&delete e[t];return e},t.type=function(e){return null===e?\"null\":void 0===e?\"undefined\":e instanceof Number||\"number\"==typeof e?\"number\":e instanceof String||\"string\"==typeof e?\"string\":e instanceof Boolean||\"boolean\"==typeof e?\"boolean\":e instanceof RegExp||\"regexp\"==typeof e?\"regexp\":t.isArray(e)?\"array\":\"object\"};var r=/^https?:\\/\\/\\S+$/;t.isUrl=function(e){return(\"string\"==typeof e||e instanceof String)&&r.test(e)},t.isArray=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},t.getAbsoluteLeft=function(e){return e.getBoundingClientRect().left+window.pageXOffset||document.scrollLeft||0},t.getAbsoluteTop=function(e){return e.getBoundingClientRect().top+window.pageYOffset||document.scrollTop||0},t.addClassName=function(e,t){var n=e.className.split(\" \");-1==n.indexOf(t)&&(n.push(t),e.className=n.join(\" \"))},t.removeClassName=function(e,t){var n=e.className.split(\" \"),i=n.indexOf(t);-1!=i&&(n.splice(i,1),e.className=n.join(\" \"))},t.stripFormatting=function(e){for(var n=e.childNodes,i=0,r=n.length;i<r;i++){var o=n[i];o.style&&o.removeAttribute(\"style\");var s=o.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];!0===l.specified&&o.removeAttribute(l.name)}t.stripFormatting(o)}},t.setEndOfContentEditable=function(e){var t,n;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),n=window.getSelection(),n.removeAllRanges(),n.addRange(t))},t.selectContentEditable=function(e){if(e&&\"DIV\"==e.nodeName){var t,n;window.getSelection&&document.createRange&&(n=document.createRange(),n.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(n))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&\"startOffset\"in e&&\"endOffset\"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){if(window.getSelection()){var n=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode(\"\")),n.setStart(e.container.firstChild,e.startOffset),n.setEnd(e.container.firstChild,e.endOffset),t.setSelection(n)}}},t.getInnerText=function(e,n){if(void 0==n&&(n={text:\"\",flush:function(){var e=this.text;return this.text=\"\",e},set:function(e){this.text=e}}),e.nodeValue)return n.flush()+e.nodeValue;if(e.hasChildNodes()){for(var i=e.childNodes,r=\"\",o=0,s=i.length;o<s;o++){var a=i[o];if(\"DIV\"==a.nodeName||\"P\"==a.nodeName){var l=i[o-1],c=l?l.nodeName:void 0;c&&\"DIV\"!=c&&\"P\"!=c&&\"BR\"!=c&&(r+=\"\\n\",n.flush()),r+=t.getInnerText(a,n),n.set(\"\\n\")}else\"BR\"==a.nodeName?(r+=n.flush(),n.set(\"\\n\")):r+=t.getInnerText(a,n)}return r}return\"P\"==e.nodeName&&-1!=t.getInternetExplorerVersion()?n.flush():\"\"},t.getInternetExplorerVersion=function(){if(-1==o){var e=-1;if(\"Microsoft Internet Explorer\"==navigator.appName){var t=navigator.userAgent;null!=new RegExp(\"MSIE ([0-9]{1,}[.0-9]{0,})\").exec(t)&&(e=parseFloat(RegExp.$1))}o=e}return o},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf(\"Firefox\")};var o=-1;t.addEventListener=function(e,n,i,r){if(e.addEventListener)return void 0===r&&(r=!1),\"mousewheel\"===n&&t.isFirefox()&&(n=\"DOMMouseScroll\"),e.addEventListener(n,i,r),i;if(e.attachEvent){var o=function(){return i.call(e,window.event)};return e.attachEvent(\"on\"+n,o),o}},t.removeEventListener=function(e,n,i,r){e.removeEventListener?(void 0===r&&(r=!1),\"mousewheel\"===n&&t.isFirefox()&&(n=\"DOMMouseScroll\"),e.removeEventListener(n,i,r)):e.detachEvent&&e.detachEvent(\"on\"+n,i)},t.parsePath=function e(t){var n,i;if(0===t.length)return[];var r=t.match(/^\\.(\\w+)/);if(r)n=r[1],i=t.substr(n.length+1);else{if(\"[\"!==t[0])throw new SyntaxError(\"Failed to parse path\");var o=t.indexOf(\"]\");if(-1===o)throw new SyntaxError(\"Character ] expected in path\");if(1===o)throw new SyntaxError(\"Index expected after [\");var s=t.substring(1,o);\"'\"===s[0]&&(s='\"'+s.substring(1,s.length-1)+'\"'),n=\"*\"===s?s:JSON.parse(s),i=t.substr(o+1)}return[n].concat(e(i))},t.improveSchemaError=function(e){if(\"enum\"===e.keyword&&Array.isArray(e.schema)){var t=e.schema;if(t){if(t=t.map(function(e){return JSON.stringify(e)}),t.length>5){var n=[\"(\"+(t.length-5)+\" more...)\"];t=t.slice(0,5),t.push(n)}e.message=\"should be equal to one of: \"+t.join(\", \")}}return\"additionalProperties\"===e.keyword&&(e.message=\"should NOT have additional property: \"+e.params.additionalProperty),e},t.insideRect=function(e,t,n){var i=void 0!==n?n:0;return t.left-i>=e.left&&t.right+i<=e.right&&t.top-i>=e.top&&t.bottom+i<=e.bottom},t.debounce=function(e,t,n){var i;return function(){var r=this,o=arguments,s=function(){i=null,n||e.apply(r,o)},a=n&&!i;clearTimeout(i),i=setTimeout(s,t),a&&e.apply(r,o)}},t.textDiff=function(e,t){for(var n=t.length,i=0,r=e.length,o=t.length;t.charAt(i)===e.charAt(i)&&i<n;)i++;for(;t.charAt(o-1)===e.charAt(r-1)&&o>i&&r>0;)o--,r--;return{start:i,end:o}},t.getInputSelection=function(e){var t,n,i,r,o,s=0,a=0;\"number\"==typeof e.selectionStart&&\"number\"==typeof e.selectionEnd?(s=e.selectionStart,a=e.selectionEnd):(n=document.selection.createRange())&&n.parentElement()==e&&(r=e.value.length,t=e.value.replace(/\\r\\n/g,\"\\n\"),i=e.createTextRange(),i.moveToBookmark(n.getBookmark()),o=e.createTextRange(),o.collapse(!1),i.compareEndPoints(\"StartToEnd\",o)>-1?s=a=r:(s=-i.moveStart(\"character\",-r),s+=t.slice(0,s).split(\"\\n\").length-1,i.compareEndPoints(\"EndToEnd\",o)>-1?a=r:(a=-i.moveEnd(\"character\",-r),a+=t.slice(0,a).split(\"\\n\").length-1)));var l=e.value.substring(0,a),c=(l.match(/\\n/g)||[]).length+1;return{start:s,end:a,col:l.length-l.lastIndexOf(\"\\n\"),row:c}},\"undefined\"!=typeof Element&&function(){function e(e){e.hasOwnProperty(\"remove\")||Object.defineProperty(e,\"remove\",{configurable:!0,enumerable:!0,writable:!0,value:function(){null!=this.parentNode&&this.parentNode.removeChild(this)}})}\"undefined\"!=typeof Element&&e(Element.prototype),\"undefined\"!=typeof CharacterData&&e(CharacterData.prototype),\"undefined\"!=typeof DocumentType&&e(DocumentType.prototype)}(),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),Array.prototype.find||(Array.prototype.find=function(e){for(var t=0;t<this.length;t++){var n=this[t];if(e.call(this,n,t,this))return n}})},\"R+GZ\":function(e,t,n){\"use strict\";function i(e,t){return t+(e?n.i(r.a)(e):\"\")}t.a=i;var r=n(\"7J+J\")},R4wc:function(e,t,n){var i=n(\"kM2E\");i(i.S+i.F,\"Object\",{assign:n(\"To3L\")})},R9M2:function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},RVBp:function(e,t,n){var i=function(){var e={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,\"{\":17,\"}\":18,JSONMemberList:19,JSONMember:20,\":\":21,\",\":22,\"[\":23,\"]\":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:\"error\",4:\"STRING\",6:\"NUMBER\",8:\"NULL\",10:\"TRUE\",11:\"FALSE\",14:\"EOF\",17:\"{\",18:\"}\",21:\":\",22:\",\",23:\"[\",24:\"]\"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(e,t,n,i,r,o,s){var a=o.length-1;switch(r){case 1:this.$=e.replace(/\\\\(\\\\|\")/g,\"$1\").replace(/\\\\n/g,\"\\n\").replace(/\\\\r/g,\"\\r\").replace(/\\\\t/g,\"\\t\").replace(/\\\\v/g,\"\\v\").replace(/\\\\f/g,\"\\f\").replace(/\\\\b/g,\"\\b\");break;case 2:this.$=Number(e);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=o[a-1];case 13:this.$={};break;case 14:this.$=o[a-1];break;case 15:this.$=[o[a-2],o[a]];break;case 16:this.$={},this.$[o[a][0]]=o[a][1];break;case 17:this.$=o[a-2],o[a-2][o[a][0]]=o[a][1];break;case 18:this.$=[];break;case 19:this.$=o[a-1];break;case 20:this.$=[o[a]];break;case 21:this.$=o[a-2],o[a-2].push(o[a])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||1,\"number\"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,i=[0],r=[null],o=[],s=this.table,a=\"\",l=0,c=0,u=0,h=2;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var d=this.lexer.yylloc;o.push(d),\"function\"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var f,p,m,g,v,y,b,w,C,A={};;){if(m=i[i.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null==f&&(f=t()),g=s[m]&&s[m][f]),void 0===g||!g.length||!g[0]){if(!u){C=[];for(y in s[m])this.terminals_[y]&&y>2&&C.push(\"'\"+this.terminals_[y]+\"'\");var E=\"\";E=this.lexer.showPosition?\"Parse error on line \"+(l+1)+\":\\n\"+this.lexer.showPosition()+\"\\nExpecting \"+C.join(\", \")+\", got '\"+this.terminals_[f]+\"'\":\"Parse error on line \"+(l+1)+\": Unexpected \"+(1==f?\"end of input\":\"'\"+(this.terminals_[f]||f)+\"'\"),this.parseError(E,{text:this.lexer.match,token:this.terminals_[f]||f,line:this.lexer.yylineno,loc:d,expected:C})}if(3==u){if(1==f)throw new Error(E||\"Parsing halted.\");c=this.lexer.yyleng,a=this.lexer.yytext,l=this.lexer.yylineno,d=this.lexer.yylloc,f=t()}for(;;){if(h.toString()in s[m])break;if(0==m)throw new Error(E||\"Parsing halted.\");!function(e){i.length=i.length-2*e,r.length=r.length-e,o.length=o.length-e}(1),m=i[i.length-1]}p=f,f=h,m=i[i.length-1],g=s[m]&&s[m][h],u=3}if(g[0]instanceof Array&&g.length>1)throw new Error(\"Parse Error: multiple actions possible at state: \"+m+\", token: \"+f);switch(g[0]){case 1:i.push(f),r.push(this.lexer.yytext),o.push(this.lexer.yylloc),i.push(g[1]),f=null,p?(f=p,p=null):(c=this.lexer.yyleng,a=this.lexer.yytext,l=this.lexer.yylineno,d=this.lexer.yylloc,u>0&&u--);break;case 2:if(b=this.productions_[g[1]][1],A.$=r[r.length-b],A._$={first_line:o[o.length-(b||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(b||1)].first_column,last_column:o[o.length-1].last_column},void 0!==(v=this.performAction.call(A,a,c,l,this.yy,g[1],r,o)))return v;b&&(i=i.slice(0,-1*b*2),r=r.slice(0,-1*b),o=o.slice(0,-1*b)),i.push(this.productions_[g[1]][0]),r.push(A.$),o.push(A._$),w=s[i[i.length-2]][i[i.length-1]],i.push(w);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\"\",this.conditionStack=[\"INITIAL\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e,e.match(/\\n/)&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?\"...\":\"\")+e.substr(-20).replace(/\\n/g,\"\")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?\"...\":\"\")).replace(/\\n/g,\"\")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join(\"-\");return e+this.upcomingInput()+\"\\n\"+t+\"^\"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,r;this._more||(this.yytext=\"\",this.match=\"\");for(var o=this._currentRules(),s=0;s<o.length&&(!(n=this._input.match(this.rules[o[s]]))||t&&!(n[0].length>t[0].length)||(t=n,i=s,this.options.flex));s++);return t?(r=t[0].match(/\\n.*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e||void 0):\"\"===this._input?this.EOF:void this.parseError(\"Lexical error on line \"+(this.yylineno+1)+\". Unrecognized text.\\n\"+this.showPosition(),{text:\"\",token:null,line:this.yylineno})},lex:function(){var e=this.next();return void 0!==e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){switch(n){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return\"INVALID\"}},e.rules=[/^(?:\\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/,/^(?:\"(?:\\\\[\\\\\"bfnrt\\/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/,/^(?:\\{)/,/^(?:\\})/,/^(?:\\[)/,/^(?:\\])/,/^(?:,)/,/^(?::)/,/^(?:true\\b)/,/^(?:false\\b)/,/^(?:null\\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=i,t.parse=i.parse.bind(i)},Rakl:function(e,t,n){\"use strict\";function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function r(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function o(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=n(\"AFT4\"),a=n(\"/CDJ\"),l=n(\"Kz7p\"),c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),h=new RegExp(\"\\\\bbs-popover\\\\S+\",\"g\"),d=n.i(a.a)({},s.a.Default,{placement:\"right\",trigger:\"click\",content:\"\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-header\"></h3><div class=\"popover-body\"></div></div>'}),f={FADE:\"fade\",SHOW:\"show\"},p={TITLE:\".popover-header\",CONTENT:\".popover-body\"},m=function(e){function t(){return i(this,t),r(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),u(t,[{key:\"isWithContent\",value:function(e){if(!(e=e||this.$tip))return!1;var t=Boolean((n.i(l.a)(p.TITLE,e)||{}).innerHTML),i=Boolean((n.i(l.a)(p.CONTENT,e)||{}).innerHTML);return t||i}},{key:\"addAttachmentClass\",value:function(e){n.i(l.b)(this.getTipElement(),\"bs-popover-\"+e)}},{key:\"setContent\",value:function(e){this.setElementContent(n.i(l.a)(p.TITLE,e),this.getTitle()),this.setElementContent(n.i(l.a)(p.CONTENT,e),this.getContent()),n.i(l.c)(e,f.FADE),n.i(l.c)(e,f.SHOW)}},{key:\"cleanTipClass\",value:function(){var e=this.getTipElement(),t=e.className.match(h);null!==t&&t.length>0&&t.forEach(function(t){n.i(l.c)(e,t)})}},{key:\"getTitle\",value:function(){var e=this.$config.title||\"\";return\"function\"==typeof e&&(e=e(this.$element)),\"object\"===(void 0===e?\"undefined\":c(e))&&e.nodeType&&!e.innerHTML.trim()&&(e=\"\"),\"string\"==typeof e&&(e=e.trim()),e||(e=n.i(l.d)(this.$element,\"title\")||n.i(l.d)(this.$element,\"data-original-title\")||\"\",e=e.trim()),e}},{key:\"getContent\",value:function(){var e=this.$config.content||\"\";return\"function\"==typeof e&&(e=e(this.$element)),\"object\"===(void 0===e?\"undefined\":c(e))&&e.nodeType&&!e.innerHTML.trim()&&(e=\"\"),\"string\"==typeof e&&(e=e.trim()),e}}],[{key:\"Default\",get:function(){return d}},{key:\"NAME\",get:function(){return\"popover\"}}]),t}(s.a);t.a=m},Rm85:function(e,t,n){\"use strict\";var i=n(\"FekY\"),r=n(\"Kz7p\"),o={perPage:{type:Number,default:20},totalRows:{type:Number,default:20},ariaControls:{type:String,default:null}};t.a={mixins:[i.a],props:o,computed:{numberOfPages:function(){var e=Math.ceil(this.totalRows/this.perPage);return e<1?1:e}},methods:{onClick:function(e,t){var i=this;e>this.numberOfPages?e=this.numberOfPages:e<1&&(e=1),this.currentPage=e,this.$nextTick(function(){var e=t.target;n.i(r.f)(e)&&i.$el.contains(e)&&e.focus?e.focus():i.focusCurrent()}),this.$emit(\"change\",this.currentPage)},makePage:function(e){return e},linkProps:function(e){return{href:\"#\"}}}}},\"S+R4\":function(e,t,n){\"use strict\";var i=n(\"TnPr\"),r=n(\"n5GY\"),o=n(\"q21c\"),s={bListGroup:i.a,bListGroupItem:r.a},a={install:function(e){n.i(o.c)(e,s)}};n.i(o.a)(a),t.a=a},S82l:function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},SfB7:function(e,t,n){e.exports=!n(\"+E39\")&&!n(\"S82l\")(function(){return 7!=Object.defineProperty(n(\"ON07\")(\"div\"),\"a\",{get:function(){return 7}}).a})},T0hN:function(e,t,n){\"use strict\";var i=n(\"HURm\"),r=n(\"VCNE\"),o=n(\"q21c\"),s={bTabs:i.a,bTab:r.a},a={install:function(e){n.i(o.c)(e,s)}};n.i(o.a)(a),t.a=a},T532:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"2PZM\"),o=n(\"GnGf\"),s={type:{type:String,default:\"iframe\",validator:function(e){return n.i(o.d)([\"iframe\",\"embed\",\"video\",\"object\",\"img\",\"b-img\",\"b-img-lazy\"],e)}},tag:{type:String,default:\"div\"},aspect:{type:String,default:\"16by9\"}};t.a={functional:!0,props:s,render:function(e,t){var o=t.props,s=t.data,a=t.children;return e(o.tag,{ref:s.ref,staticClass:\"embed-responsive\",class:i({},\"embed-responsive-\"+o.aspect,Boolean(o.aspect))},[e(o.type,n.i(r.a)(s,{ref:\"\",staticClass:\"embed-responsive-item\"}),a)])}}},TMTb:function(e,t,n){\"use strict\";t.a={props:{state:{type:[Boolean,String],default:null}},computed:{computedState:function(){var e=this.state;return!0===e||\"valid\"===e||!1!==e&&\"invalid\"!==e&&null},stateClass:function(){var e=this.computedState;return!0===e?\"is-valid\":!1===e?\"is-invalid\":null}}}},TaNr:function(e,t,n){\"use strict\";var i=n(\"yA1N\"),r=n(\"q21c\"),o={bScrollspy:i.a},s={install:function(e){n.i(r.b)(e,o)}};n.i(r.a)(s),t.a=s},TcQ7:function(e,t,n){var i=n(\"MU5D\"),r=n(\"52gC\");e.exports=function(e){return i(r(e))}},Teo5:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r=n(\"/CDJ\"),o=n(\"IEZC\"),s=n.i(r.a)({},o.b,{text:{type:String,default:null},href:{type:String,default:null}});t.a={functional:!0,props:s,render:function(e,t){var r=t.props,s=t.data,a=t.children;return e(\"li\",n.i(i.a)(s,{staticClass:\"breadcrumb-item\",class:{active:r.active},attrs:{role:\"presentation\"}}),[e(o.a,{props:r},a)])}}},TnPr:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={tag:{type:String,default:\"div\"},flush:{type:Boolean,default:!1}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.children,a={staticClass:\"list-group\",class:{\"list-group-flush\":r.flush}};return e(r.tag,n.i(i.a)(o,a),s)}}},To3L:function(e,t,n){\"use strict\";var i=n(\"lktj\"),r=n(\"1kS7\"),o=n(\"NpIQ\"),s=n(\"sB3e\"),a=n(\"MU5D\"),l=Object.assign;e.exports=!l||n(\"S82l\")(function(){var e={},t={},n=Symbol(),i=\"abcdefghijklmnopqrst\";return e[n]=7,i.split(\"\").forEach(function(e){t[e]=e}),7!=l({},e)[n]||Object.keys(l({},t)).join(\"\")!=i})?function(e,t){for(var n=s(e),l=arguments.length,c=1,u=r.f,h=o.f;l>c;)for(var d,f=a(arguments[c++]),p=u?i(f).concat(u(f)):i(f),m=p.length,g=0;m>g;)h.call(f,d=p[g++])&&(n[d]=f[d]);return n}:l},UWlG:function(e,t,n){\"use strict\";function i(e){return e}t.a=i},UZ5h:function(e,t,n){\"use strict\";function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function r(e,t,n){if(e&&c.isObject(e)&&e instanceof i)return e;var r=new i;return r.parse(e,t,n),r}function o(e){return c.isString(e)&&(e=r(e)),e instanceof i?e.format():i.prototype.format.call(e)}function s(e,t){return r(e,!1,!0).resolve(t)}function a(e,t){return e?r(e,!1,!0).resolveObject(t):t}var l=n(\"MsCo\"),c=n(\"qOJP\");t.parse=r,t.resolve=s,t.resolveObject=a,t.format=o,t.Url=i;var u=/^([a-z0-9.+-]+:)/i,h=/:[0-9]*$/,d=/^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,f=[\"<\",\">\",'\"',\"`\",\" \",\"\\r\",\"\\n\",\"\\t\"],p=[\"{\",\"}\",\"|\",\"\\\\\",\"^\",\"`\"].concat(f),m=[\"'\"].concat(p),g=[\"%\",\"/\",\"?\",\";\",\"#\"].concat(m),v=[\"/\",\"?\",\"#\"],y=/^[+a-z0-9A-Z_-]{0,63}$/,b=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,w={javascript:!0,\"javascript:\":!0},C={javascript:!0,\"javascript:\":!0},A={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,\"http:\":!0,\"https:\":!0,\"ftp:\":!0,\"gopher:\":!0,\"file:\":!0},E=n(\"1nuA\");i.prototype.parse=function(e,t,n){if(!c.isString(e))throw new TypeError(\"Parameter 'url' must be a string, not \"+typeof e);var i=e.indexOf(\"?\"),r=-1!==i&&i<e.indexOf(\"#\")?\"?\":\"#\",o=e.split(r),s=/\\\\/g;o[0]=o[0].replace(s,\"/\"),e=o.join(r);var a=e;if(a=a.trim(),!n&&1===e.split(\"#\").length){var h=d.exec(a);if(h)return this.path=a,this.href=a,this.pathname=h[1],h[2]?(this.search=h[2],this.query=t?E.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search=\"\",this.query={}),this}var f=u.exec(a);if(f){f=f[0];var p=f.toLowerCase();this.protocol=p,a=a.substr(f.length)}if(n||f||a.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)){var x=\"//\"===a.substr(0,2);!x||f&&C[f]||(a=a.substr(2),this.slashes=!0)}if(!C[f]&&(x||f&&!A[f])){for(var F=-1,S=0;S<v.length;S++){var $=a.indexOf(v[S]);-1!==$&&(-1===F||$<F)&&(F=$)}var k,_;_=-1===F?a.lastIndexOf(\"@\"):a.lastIndexOf(\"@\",F),-1!==_&&(k=a.slice(0,_),a=a.slice(_+1),this.auth=decodeURIComponent(k)),F=-1;for(var S=0;S<g.length;S++){var $=a.indexOf(g[S]);-1!==$&&(-1===F||$<F)&&(F=$)}-1===F&&(F=a.length),this.host=a.slice(0,F),a=a.slice(F),this.parseHost(),this.hostname=this.hostname||\"\";var B=\"[\"===this.hostname[0]&&\"]\"===this.hostname[this.hostname.length-1];if(!B)for(var D=this.hostname.split(/\\./),S=0,T=D.length;S<T;S++){var L=D[S];if(L&&!L.match(y)){for(var O=\"\",R=0,P=L.length;R<P;R++)L.charCodeAt(R)>127?O+=\"x\":O+=L[R];if(!O.match(y)){var M=D.slice(0,S),I=D.slice(S+1),j=L.match(b);j&&(M.push(j[1]),I.unshift(j[2])),I.length&&(a=\"/\"+I.join(\".\")+a),this.hostname=M.join(\".\");break}}}this.hostname.length>255?this.hostname=\"\":this.hostname=this.hostname.toLowerCase(),B||(this.hostname=l.toASCII(this.hostname));var N=this.port?\":\"+this.port:\"\",H=this.hostname||\"\";this.host=H+N,this.href+=this.host,B&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),\"/\"!==a[0]&&(a=\"/\"+a))}if(!w[p])for(var S=0,T=m.length;S<T;S++){var V=m[S];if(-1!==a.indexOf(V)){var W=encodeURIComponent(V);W===V&&(W=escape(V)),a=a.split(V).join(W)}}var z=a.indexOf(\"#\");-1!==z&&(this.hash=a.substr(z),a=a.slice(0,z));var U=a.indexOf(\"?\");if(-1!==U?(this.search=a.substr(U),this.query=a.substr(U+1),t&&(this.query=E.parse(this.query)),a=a.slice(0,U)):t&&(this.search=\"\",this.query={}),a&&(this.pathname=a),A[p]&&this.hostname&&!this.pathname&&(this.pathname=\"/\"),this.pathname||this.search){var N=this.pathname||\"\",K=this.search||\"\";this.path=N+K}return this.href=this.format(),this},i.prototype.format=function(){var e=this.auth||\"\";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,\":\"),e+=\"@\");var t=this.protocol||\"\",n=this.pathname||\"\",i=this.hash||\"\",r=!1,o=\"\";this.host?r=e+this.host:this.hostname&&(r=e+(-1===this.hostname.indexOf(\":\")?this.hostname:\"[\"+this.hostname+\"]\"),this.port&&(r+=\":\"+this.port)),this.query&&c.isObject(this.query)&&Object.keys(this.query).length&&(o=E.stringify(this.query));var s=this.search||o&&\"?\"+o||\"\";return t&&\":\"!==t.substr(-1)&&(t+=\":\"),this.slashes||(!t||A[t])&&!1!==r?(r=\"//\"+(r||\"\"),n&&\"/\"!==n.charAt(0)&&(n=\"/\"+n)):r||(r=\"\"),i&&\"#\"!==i.charAt(0)&&(i=\"#\"+i),s&&\"?\"!==s.charAt(0)&&(s=\"?\"+s),n=n.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),s=s.replace(\"#\",\"%23\"),t+r+n+s+i},i.prototype.resolve=function(e){return this.resolveObject(r(e,!1,!0)).format()},i.prototype.resolveObject=function(e){if(c.isString(e)){var t=new i;t.parse(e,!1,!0),e=t}for(var n=new i,r=Object.keys(this),o=0;o<r.length;o++){var s=r[o];n[s]=this[s]}if(n.hash=e.hash,\"\"===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var a=Object.keys(e),l=0;l<a.length;l++){var u=a[l];\"protocol\"!==u&&(n[u]=e[u])}return A[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname=\"/\"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!A[e.protocol]){for(var h=Object.keys(e),d=0;d<h.length;d++){var f=h[d];n[f]=e[f]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||C[e.protocol])n.pathname=e.pathname;else{for(var p=(e.pathname||\"\").split(\"/\");p.length&&!(e.host=p.shift()););e.host||(e.host=\"\"),e.hostname||(e.hostname=\"\"),\"\"!==p[0]&&p.unshift(\"\"),p.length<2&&p.unshift(\"\"),n.pathname=p.join(\"/\")}if(n.search=e.search,n.query=e.query,n.host=e.host||\"\",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var m=n.pathname||\"\",g=n.search||\"\";n.path=m+g}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var v=n.pathname&&\"/\"===n.pathname.charAt(0),y=e.host||e.pathname&&\"/\"===e.pathname.charAt(0),b=y||v||n.host&&e.pathname,w=b,E=n.pathname&&n.pathname.split(\"/\")||[],p=e.pathname&&e.pathname.split(\"/\")||[],x=n.protocol&&!A[n.protocol];if(x&&(n.hostname=\"\",n.port=null,n.host&&(\"\"===E[0]?E[0]=n.host:E.unshift(n.host)),n.host=\"\",e.protocol&&(e.hostname=null,e.port=null,e.host&&(\"\"===p[0]?p[0]=e.host:p.unshift(e.host)),e.host=null),b=b&&(\"\"===p[0]||\"\"===E[0])),y)n.host=e.host||\"\"===e.host?e.host:n.host,n.hostname=e.hostname||\"\"===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,E=p;else if(p.length)E||(E=[]),E.pop(),E=E.concat(p),n.search=e.search,n.query=e.query;else if(!c.isNullOrUndefined(e.search)){if(x){n.hostname=n.host=E.shift();var F=!!(n.host&&n.host.indexOf(\"@\")>0)&&n.host.split(\"@\");F&&(n.auth=F.shift(),n.host=n.hostname=F.shift())}return n.search=e.search,n.query=e.query,c.isNull(n.pathname)&&c.isNull(n.search)||(n.path=(n.pathname?n.pathname:\"\")+(n.search?n.search:\"\")),n.href=n.format(),n}if(!E.length)return n.pathname=null,n.search?n.path=\"/\"+n.search:n.path=null,n.href=n.format(),n;for(var S=E.slice(-1)[0],$=(n.host||e.host||E.length>1)&&(\".\"===S||\"..\"===S)||\"\"===S,k=0,_=E.length;_>=0;_--)S=E[_],\".\"===S?E.splice(_,1):\"..\"===S?(E.splice(_,1),k++):k&&(E.splice(_,1),k--);if(!b&&!w)for(;k--;k)E.unshift(\"..\");!b||\"\"===E[0]||E[0]&&\"/\"===E[0].charAt(0)||E.unshift(\"\"),$&&\"/\"!==E.join(\"/\").substr(-1)&&E.push(\"\");var B=\"\"===E[0]||E[0]&&\"/\"===E[0].charAt(0);if(x){n.hostname=n.host=B?\"\":E.length?E.shift():\"\";var F=!!(n.host&&n.host.indexOf(\"@\")>0)&&n.host.split(\"@\");F&&(n.auth=F.shift(),n.host=n.hostname=F.shift())}return b=b||n.host&&E.length,b&&!B&&E.unshift(\"\"),E.length?n.pathname=E.join(\"/\"):(n.pathname=null,n.path=null),c.isNull(n.pathname)&&c.isNull(n.search)||(n.path=(n.pathname?n.pathname:\"\")+(n.search?n.search:\"\")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var e=this.host,t=h.exec(e);t&&(t=t[0],\":\"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},UePd:function(e,t,n){\"use strict\";var i=n(\"34sA\"),r=n(\"Kz7p\");t.a={mixins:[i.a],render:function(e){var t=this,n=e(t.tag,{class:t.classObject,directives:[{name:\"show\",value:t.show}],attrs:{id:t.id||null},on:{click:t.clickHandler}},[t.$slots.default]);return e(\"transition\",{props:{enterClass:\"\",enterActiveClass:\"collapsing\",enterToClass:\"\",leaveClass:\"\",leaveActiveClass:\"collapsing\",leaveToClass:\"\"},on:{enter:t.onEnter,afterEnter:t.onAfterEnter,leave:t.onLeave,afterLeave:t.onAfterLeave}},[n])},data:function(){return{show:this.visible,transitioning:!1}},model:{prop:\"visible\",event:\"input\"},props:{id:{type:String,required:!0},isNav:{type:Boolean,default:!1},accordion:{type:String,default:null},visible:{type:Boolean,default:!1},tag:{type:String,default:\"div\"}},watch:{visible:function(e){e!==this.show&&(this.show=e)},show:function(e,t){e!==t&&this.emitState()}},computed:{classObject:function(){return{\"navbar-collapse\":this.isNav,collapse:!this.transitioning,show:this.show&&!this.transitioning}}},methods:{toggle:function(){this.show=!this.show},onEnter:function(e){e.style.height=0,n.i(r.v)(e),e.style.height=e.scrollHeight+\"px\",this.transitioning=!0,this.$emit(\"show\")},onAfterEnter:function(e){e.style.height=null,this.transitioning=!1,this.$emit(\"shown\")},onLeave:function(e){e.style.height=\"auto\",e.style.display=\"block\",e.style.height=e.getBoundingClientRect().height+\"px\",n.i(r.v)(e),this.transitioning=!0,e.style.height=0,this.$emit(\"hide\")},onAfterLeave:function(e){e.style.height=null,this.transitioning=!1,this.$emit(\"hidden\")},emitState:function(){this.$emit(\"input\",this.show),this.$root.$emit(\"bv::collapse::state\",this.id,this.show),this.accordion&&this.show&&this.$root.$emit(\"bv::collapse::accordion\",this.id,this.accordion)},clickHandler:function(e){var t=e.target;this.isNav&&t&&\"block\"===getComputedStyle(this.$el).display&&(n.i(r.e)(t,\"nav-link\")||n.i(r.e)(t,\"dropdown-item\"))&&(this.show=!1)},handleToggleEvt:function(e){e===this.id&&this.toggle()},handleAccordionEvt:function(e,t){this.accordion&&t===this.accordion&&(e===this.id?this.show||this.toggle():this.show&&this.toggle())},handleResize:function(){this.show=\"block\"===getComputedStyle(this.$el).display}},created:function(){this.listenOnRoot(\"bv::toggle::collapse\",this.handleToggleEvt),this.listenOnRoot(\"bv::collapse::accordion\",this.handleAccordionEvt)},mounted:function(){this.isNav&&\"undefined\"!=typeof document&&(window.addEventListener(\"resize\",this.handleResize,!1),window.addEventListener(\"orientationchange\",this.handleResize,!1),this.handleResize()),this.emitState()},beforeDestroy:function(){this.isNav&&\"undefined\"!=typeof document&&(window.removeEventListener(\"resize\",this.handleResize,!1),window.removeEventListener(\"orientationchange\",this.handleResize,!1))}}},UgDT:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(){return{type:[Boolean,String,Number],default:!1}}function o(){return{type:[String,Number],default:null}}var s=n(\"2PZM\"),a=n(\"a44S\"),l=n(\"R+GZ\"),c=n(\"/CDJ\"),u=n(\"GnGf\"),h=n.i(a.a)(function(e,t,n){var i=e;if(!1!==n&&null!==n&&void 0!==n)return t&&(i+=\"-\"+t),\"col\"!==e||\"\"!==n&&!0!==n?(i+=\"-\"+n,i.toLowerCase()):i.toLowerCase()}),d=[\"sm\",\"md\",\"lg\",\"xl\"],f=d.reduce(function(e,t){return e[t]=r(),e},n.i(c.f)(null)),p=d.reduce(function(e,t){return e[n.i(l.a)(t,\"offset\")]=o(),e},n.i(c.f)(null)),m=d.reduce(function(e,t){return e[n.i(l.a)(t,\"order\")]=o(),e},n.i(c.f)(null)),g=n.i(c.a)(n.i(c.f)(null),{col:n.i(c.b)(f),offset:n.i(c.b)(p),order:n.i(c.b)(m)}),v=n.i(c.a)({},f,p,m,{tag:{type:String,default:\"div\"},col:{type:Boolean,default:!1},cols:o(),offset:o(),order:o(),alignSelf:{type:String,default:null,validator:function(e){return n.i(u.d)([\"auto\",\"start\",\"end\",\"center\",\"baseline\",\"stretch\"],e)}}});t.a={functional:!0,props:v,render:function(e,t){var r,o=t.props,a=t.data,l=t.children,c=[];for(var u in g)for(var d=g[u],f=0;f<d.length;f++){var p=h(u,d[f].replace(u,\"\"),o[d[f]]);p&&c.push(p)}return c.push((r={col:o.col||0===c.length&&!o.cols},i(r,\"col-\"+o.cols,o.cols),i(r,\"offset-\"+o.offset,o.offset),i(r,\"order-\"+o.order,o.order),i(r,\"align-self-\"+o.alignSelf,o.alignSelf),r)),e(o.tag,n.i(s.a)(a,{class:c}),l)}}},UqMQ:function(e,t,n){\"use strict\";function i(e){return e?e instanceof Object?n.i(f.b)(e).map(function(t){return i(e[t])}).join(\" \"):String(e):\"\"}function r(e){return e instanceof Object?i(n.i(f.b)(e).reduce(function(t,n){return/^_/.test(n)||(t[n]=e[n]),t},{})):\"\"}function o(e,t,n){return\"number\"==typeof e[n]&&\"number\"==typeof t[n]?e[n]<t[n]&&-1||e[n]>t[n]&&1||0:i(e[n]).localeCompare(i(t[n]),void 0,{numeric:!0})}function s(e,t){var i=null;return\"string\"==typeof t?i={key:e,label:t}:\"function\"==typeof t?i={key:e,formatter:t}:\"object\"===(void 0===t?\"undefined\":y(t))?(i=n.i(f.a)({},t),i.key=i.key||e):!1!==t&&(i={key:e}),i}var a=n(\"peot\"),l=n.n(a),c=n(\"AyHp\"),u=n(\"X17e\"),h=n(\"tgmf\"),d=n(\"7C8l\"),f=n(\"/CDJ\"),p=n(\"GnGf\"),m=n(\"OfYj\"),g=n(\"34sA\"),v=n(\"1/oy\"),y=(n.n(v),\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e});t.a={mixins:[m.a,g.a],render:function(e){var t=this,n=t.$slots,i=t.$scopedSlots,r=t.computedFields,o=t.computedItems,s=e(!1);if(t.caption||n[\"table-caption\"]){var a={style:t.captionStyles};n[\"table-caption\"]||(a.domProps={innerHTML:t.caption}),s=e(\"caption\",a,n[\"table-caption\"])}var l=n[\"table-colgroup\"]?e(\"colgroup\",{},n[\"table-colgroup\"]):e(!1),c=function(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return r.map(function(r,o){var s={key:r.key,class:t.fieldClasses(r),style:r.thStyle||{},attrs:{tabindex:r.sortable?\"0\":null,abbr:r.headerAbbr||null,title:r.headerTitle||null,\"aria-colindex\":String(o+1),\"aria-label\":r.sortable?t.localSortDesc&&t.localSortBy===r.key?t.labelSortAsc:t.labelSortDesc:null,\"aria-sort\":r.sortable&&t.localSortBy===r.key?t.localSortDesc?\"descending\":\"ascending\":null},on:{click:function(e){e.stopPropagation(),e.preventDefault(),t.headClicked(e,r)},keydown:function(e){var n=e.keyCode;n!==h.a.ENTER&&n!==h.a.SPACE||(e.stopPropagation(),e.preventDefault(),t.headClicked(e,r))}}},a=n&&i[\"FOOT_\"+r.key]?i[\"FOOT_\"+r.key]:i[\"HEAD_\"+r.key];return a?a=[a({label:r.label,column:r.key,field:r})]:s.domProps={innerHTML:r.label},e(\"th\",s,a)})},u=e(!1);!0!==t.isStacked&&(u=e(\"thead\",{class:t.headClasses},[e(\"tr\",{class:t.theadTrClass},c(!1))]));var d=e(!1);t.footClone&&!0!==t.isStacked&&(d=e(\"tfoot\",{class:t.footClasses},[e(\"tr\",{class:t.tfootTrClass},c(!0))]));var f=[];if(i[\"top-row\"]&&!0!==t.isStacked?f.push(e(\"tr\",{key:\"top-row\",class:[\"b-table-top-row\",t.tbodyTrClass]},[i[\"top-row\"]({columns:r.length,fields:r})])):f.push(e(!1)),o.forEach(function(n,o){var s=i[\"row-details\"],a=Boolean(n._showDetails&&s),l=a?t.safeId(\"_details_\"+o+\"_\"):null,c=function(){s&&t.$set(n,\"_showDetails\",!n._showDetails)},u=r.map(function(r,s){var a={key:\"row-\"+o+\"-cell-\"+s,class:t.tdClasses(r,n),attrs:r.tdAttr||{},domProps:{}};a.attrs[\"aria-colindex\"]=String(s+1);var l=void 0;if(i[r.key])l=[i[r.key]({item:n,index:o,unformatted:n[r.key],value:t.getFormattedValue(n,r),toggleDetails:c,detailsShowing:Boolean(n._showDetails)})],t.isStacked&&(l=[e(\"div\",{},[l])]);else{var u=t.getFormattedValue(n,r);t.isStacked?l=[e(\"div\",{domProps:{innerHTML:u}})]:a.domProps.innerHTML=u}return t.isStacked&&(a.attrs[\"data-label\"]=r.label,r.isRowHeader?a.attrs.role=\"rowheader\":a.attrs.role=\"cell\"),e(r.isRowHeader?\"th\":\"td\",a,l)}),h=null;if(t.currentPage&&t.perPage&&t.perPage>0&&(h=(t.currentPage-1)*t.perPage+o+1),f.push(e(\"tr\",{key:\"row-\"+o,class:[t.rowClasses(n),{\"b-table-has-details\":a}],attrs:{\"aria-describedby\":l,\"aria-rowindex\":h,role:t.isStacked?\"row\":null},on:{click:function(e){t.rowClicked(e,n,o)},dblclick:function(e){t.rowDblClicked(e,n,o)},mouseenter:function(e){t.rowHovered(e,n,o)}}},u)),a){var d={colspan:String(r.length)},p={id:l};t.isStacked&&(d.role=\"cell\",p.role=\"row\");var m=e(\"td\",{attrs:d},[s({item:n,index:o,fields:r,toggleDetails:c})]);f.push(e(\"tr\",{key:\"details-\"+o,class:[\"b-table-details\",t.tbodyTrClass],attrs:p},[m]))}else s&&f.push(e(!1))}),!t.showEmpty||o&&0!==o.length)f.push(e(!1));else{var p=t.filter?n.emptyfiltered:n.empty;p||(p=e(\"div\",{class:[\"text-center\",\"my-2\"],domProps:{innerHTML:t.filter?t.emptyFilteredText:t.emptyText}})),p=e(\"td\",{attrs:{colspan:String(r.length),role:t.isStacked?\"cell\":null}},[e(\"div\",{attrs:{role:\"alert\",\"aria-live\":\"polite\"}},[p])]),f.push(e(\"tr\",{key:\"empty-row\",class:[\"b-table-empty-row\",t.tbodyTrClass],attrs:t.isStacked?{role:\"row\"}:{}},[p]))}i[\"bottom-row\"]&&!0!==t.isStacked?f.push(e(\"tr\",{key:\"bottom-row\",class:[\"b-table-bottom-row\",t.tbodyTrClass]},[i[\"bottom-row\"]({columns:r.length,fields:r})])):f.push(e(!1));var m=e(\"tbody\",{class:t.bodyClasses,attrs:t.isStacked?{role:\"rowgroup\"}:{}},f),g=e(\"table\",{class:t.tableClasses,attrs:{id:t.safeId(),role:t.isStacked?\"table\":null,\"aria-busy\":t.computedBusy?\"true\":\"false\",\"aria-colcount\":String(r.length),\"aria-rowcount\":t.$attrs[\"aria-rowcount\"]||t.perPage&&t.perPage>0?\"-1\":null}},[s,l,u,d,m]);return t.isResponsive?e(\"div\",{class:t.responsiveClass},[g]):g},data:function(){return{localSortBy:this.sortBy||\"\",localSortDesc:this.sortDesc||!1,localItems:[],filteredItems:[],localBusy:!1}},props:{items:{type:[Array,Function],default:function(){return[]}},fields:{type:[Object,Array],default:null},sortBy:{type:String,default:null},sortDesc:{type:Boolean,default:!1},caption:{type:String,default:null},captionTop:{type:Boolean,default:!1},striped:{type:Boolean,default:!1},bordered:{type:Boolean,default:!1},outlined:{type:Boolean,default:!1},dark:{type:Boolean,default:function(){return!(!this||\"boolean\"!=typeof this.inverse)&&(n.i(d.a)(\"b-table: prop 'inverse' has been deprecated. Use 'dark' instead\"),this.dark)}},inverse:{type:Boolean,default:null},hover:{type:Boolean,default:!1},small:{type:Boolean,default:!1},fixed:{type:Boolean,default:!1},footClone:{type:Boolean,default:!1},responsive:{type:[Boolean,String],default:!1},stacked:{type:[Boolean,String],default:!1},headVariant:{type:String,default:\"\"},footVariant:{type:String,default:\"\"},theadClass:{type:[String,Array],default:null},theadTrClass:{type:[String,Array],default:null},tbodyClass:{type:[String,Array],default:null},tbodyTrClass:{type:[String,Array],default:null},tfootClass:{type:[String,Array],default:null},tfootTrClass:{type:[String,Array],default:null},perPage:{type:Number,default:0},currentPage:{type:Number,default:1},filter:{type:[String,RegExp,Function],default:null},sortCompare:{type:Function,default:null},noLocalSorting:{type:Boolean,default:!1},noProviderPaging:{type:Boolean,default:!1},noProviderSorting:{type:Boolean,default:!1},noProviderFiltering:{type:Boolean,default:!1},busy:{type:Boolean,default:!1},value:{type:Array,default:function(){return[]}},labelSortAsc:{type:String,default:\"Click to sort Ascending\"},labelSortDesc:{type:String,default:\"Click to sort Descending\"},showEmpty:{type:Boolean,default:!1},emptyText:{type:String,default:\"There are no records to show\"},emptyFilteredText:{type:String,default:\"There are no records matching your request\"},apiUrl:{type:String,default:\"\"}},watch:{items:function(e,t){t!==e&&this._providerUpdate()},context:function(e,t){n.i(c.a)(e,t)||this.$emit(\"context-changed\",e)},filteredItems:function(e,t){this.localFiltering&&e.length!==t.length&&this.$emit(\"filtered\",e)},sortDesc:function(e,t){e!==this.localSortDesc&&(this.localSortDesc=e||!1)},localSortDesc:function(e,t){e!==t&&(this.$emit(\"update:sortDesc\",e),this.noProviderSorting||this._providerUpdate())},sortBy:function(e,t){e!==this.localSortBy&&(this.localSortBy=e||null)},localSortBy:function(e,t){e!==t&&(this.$emit(\"update:sortBy\",e),this.noProviderSorting||this._providerUpdate())},perPage:function(e,t){t===e||this.noProviderPaging||this._providerUpdate()},currentPage:function(e,t){t===e||this.noProviderPaging||this._providerUpdate()},filter:function(e,t){t===e||this.noProviderFiltering||this._providerUpdate()},localBusy:function(e,t){e!==t&&this.$emit(\"update:busy\",e)}},mounted:function(){var e=this;this.localSortBy=this.sortBy,this.localSortDesc=this.sortDesc,this.hasProvider&&this._providerUpdate(),this.listenOnRoot(\"bv::refresh::table\",function(t){t!==e.id&&t!==e||e._providerUpdate()})},computed:{isStacked:function(){return\"\"===this.stacked||this.stacked},isResponsive:function(){var e=\"\"===this.responsive||this.responsive;return!this.isStacked&&e},responsiveClass:function(){return!0===this.isResponsive?\"table-responsive\":this.isResponsive?\"table-responsive-\"+this.responsive:\"\"},tableClasses:function(){return[\"table\",\"b-table\",this.striped?\"table-striped\":\"\",this.hover?\"table-hover\":\"\",this.dark?\"table-dark\":\"\",this.bordered?\"table-bordered\":\"\",this.small?\"table-sm\":\"\",this.outlined?\"border\":\"\",this.fixed?\"b-table-fixed\":\"\",!0===this.isStacked?\"b-table-stacked\":this.isStacked?\"b-table-stacked-\"+this.stacked:\"\"]},headClasses:function(){return[this.headVariant?\"thead-\"+this.headVariant:\"\",this.theadClass]},bodyClasses:function(){return[this.tbodyClass]},footClasses:function(){var e=this.footVariant||this.headVariant||null;return[e?\"thead-\"+e:\"\",this.tfootClass]},captionStyles:function(){return this.captionTop?{captionSide:\"top\"}:{}},hasProvider:function(){return this.items instanceof Function},localFiltering:function(){return!this.hasProvider||this.noProviderFiltering},localSorting:function(){return this.hasProvider?this.noProviderSorting:!this.noLocalSorting},localPaging:function(){return!this.hasProvider||this.noProviderPaging},context:function(){return{perPage:this.perPage,currentPage:this.currentPage,filter:this.filter,sortBy:this.localSortBy,sortDesc:this.localSortDesc,apiUrl:this.apiUrl}},computedFields:function(){var e=this,t=[];if(n.i(p.b)(this.fields)?this.fields.filter(function(e){return e}).forEach(function(e){if(\"string\"==typeof e)t.push({key:e,label:l()(e)});else if(\"object\"===(void 0===e?\"undefined\":y(e))&&e.key&&\"string\"==typeof e.key)t.push(n.i(f.a)({},e));else if(\"object\"===(void 0===e?\"undefined\":y(e))&&1===n.i(f.b)(e).length){var i=n.i(f.b)(e)[0],r=s(i,e[i]);r&&t.push(r)}}):this.fields&&\"object\"===y(this.fields)&&n.i(f.b)(this.fields).length>0&&n.i(f.b)(this.fields).forEach(function(n){var i=s(n,e.fields[n]);i&&t.push(i)}),0===t.length&&this.computedItems.length>0){var i=this.computedItems[0];n.i(f.b)(i).forEach(function(e){t.push({key:e,label:l()(e)})})}var r={};return t.filter(function(e){return!r[e.key]&&(r[e.key]=!0,e.label=e.label||l()(e.key),!0)})},computedItems:function(){var e=this.perPage,t=this.currentPage,i=this.filter,s=this.localSortBy,a=this.localSortDesc,l=this.sortCompare,c=this.localFiltering,h=this.localSorting,d=this.localPaging,f=this.hasProvider?this.localItems:this.items;if(!f)return this.$nextTick(this._providerUpdate),[];if(f=f.slice(),i&&c)if(i instanceof Function)f=f.filter(i);else{var p=void 0;p=i instanceof RegExp?i:new RegExp(\".*\"+i+\".*\",\"ig\"),f=f.filter(function(e){var t=p.test(r(e));return p.lastIndex=0,t})}return c&&(this.filteredItems=f.slice()),s&&h&&(f=n.i(u.a)(f,function(e,t){var n=null;return\"function\"==typeof l&&(n=l(e,t,s)),null!==n&&void 0!==n||(n=o(e,t,s)),(n||0)*(a?-1:1)})),Boolean(e)&&d&&(f=f.slice((t-1)*e,t*e)),this.$emit(\"input\",f),f},computedBusy:function(){return this.busy||this.localBusy}},methods:{keys:f.b,fieldClasses:function(e){return[e.sortable?\"sorting\":\"\",e.sortable&&this.localSortBy===e.key?\"sorting_\"+(this.localSortDesc?\"desc\":\"asc\"):\"\",e.variant?\"table-\"+e.variant:\"\",e.class?e.class:\"\",e.thClass?e.thClass:\"\"]},tdClasses:function(e,t){var n=\"\";return t._cellVariants&&t._cellVariants[e.key]&&(n=(this.dark?\"bg\":\"table\")+\"-\"+t._cellVariants[e.key]),[e.variant&&!n?(this.dark?\"bg\":\"table\")+\"-\"+e.variant:\"\",n,e.class?e.class:\"\",e.tdClass?e.tdClass:\"\"]},rowClasses:function(e){return[e._rowVariant?(this.dark?\"bg\":\"table\")+\"-\"+e._rowVariant:\"\",this.tbodyTrClass]},rowClicked:function(e,t,n){this.stopIfBusy(e)||this.$emit(\"row-clicked\",t,n,e)},rowDblClicked:function(e,t,n){this.stopIfBusy(e)||this.$emit(\"row-dblclicked\",t,n,e)},rowHovered:function(e,t,n){this.stopIfBusy(e)||this.$emit(\"row-hovered\",t,n,e)},headClicked:function(e,t){if(!this.stopIfBusy(e)){var n=!1;t.sortable?(t.key===this.localSortBy?this.localSortDesc=!this.localSortDesc:(this.localSortBy=t.key,this.localSortDesc=!1),n=!0):this.localSortBy&&(this.localSortBy=null,this.localSortDesc=!1,n=!0),this.$emit(\"head-clicked\",t.key,t,e),n&&this.$emit(\"sort-changed\",this.context)}},stopIfBusy:function(e){return!!this.computedBusy&&(e.preventDefault(),e.stopPropagation(),!0)},refresh:function(){this.hasProvider&&this._providerUpdate()},_providerSetLocal:function(e){this.localItems=e&&e.length>0?e.slice():[],this.localBusy=!1,this.$emit(\"refreshed\"),this.emitOnRoot(\"table::refreshed\",this.id),this.id&&this.emitOnRoot(\"bv::table::refreshed\",this.id)},_providerUpdate:function(){var e=this;if(!this.computedBusy&&this.hasProvider){this.localBusy=!0;var t=this.items(this.context,this._providerSetLocal);t&&t.then&&\"function\"==typeof t.then?t.then(function(t){e._providerSetLocal(t)}):this._providerSetLocal(t)}},getFormattedValue:function(e,t){var n=t.key,i=t.formatter,r=this.$parent,o=e[n];return i&&(\"function\"==typeof i?o=i(o,n,e):\"string\"==typeof i&&\"function\"==typeof r[i]&&(o=r[i](o,n,e))),o}}}},UrSP:function(e,t,n){\"use strict\";var i=[\"multipleOf\",\"maximum\",\"exclusiveMaximum\",\"minimum\",\"exclusiveMinimum\",\"maxLength\",\"minLength\",\"pattern\",\"additionalItems\",\"maxItems\",\"minItems\",\"uniqueItems\",\"maxProperties\",\"minProperties\",\"required\",\"additionalProperties\",\"enum\",\"format\",\"const\"];e.exports=function(e,t){for(var n=0;n<t.length;n++){e=JSON.parse(JSON.stringify(e));var r,o=t[n].split(\"/\"),s=e;for(r=1;r<o.length;r++)s=s[o[r]];for(r=0;r<i.length;r++){var a=i[r],l=s[a];l&&(s[a]={anyOf:[l,{$ref:\"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#\"}]})}}return e}},UuGF:function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:n)(e)}},V2Be:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={disabled:{type:Boolean,default:!1}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.parent,a=t.children;return e(\"button\",n.i(i.a)(o,{props:r,staticClass:\"dropdown-item\",attrs:{role:\"menuitem\",type:\"button\",disabled:r.disabled},on:{click:function(e){s.$root.$emit(\"clicked::link\",e)}}}),a)}}},V3tA:function(e,t,n){n(\"R4wc\"),e.exports=n(\"FeBl\").Object.assign},VCNE:function(e,t,n){\"use strict\";var i=n(\"OfYj\");t.a={mixins:[i.a],render:function(e){var t=this,n=e(!1);return!t.localActive&&this.computedLazy||(n=e(t.tag,{ref:\"panel\",class:t.tabClasses,directives:[{name:\"show\",value:t.localActive}],attrs:{role:\"tabpanel\",id:t.safeId(),\"aria-hidden\":t.localActive?\"false\":\"true\",\"aria-expanded\":t.localActive?\"true\":\"false\",\"aria-lablelledby\":t.controlledBy||null}},[t.$slots.default])),e(\"transition\",{props:{mode:\"out-in\"},on:{beforeEnter:t.beforeEnter,afterEnter:t.afterEnter,afterLeave:t.afterLeave}},[n])},methods:{beforeEnter:function(){this.show=!1},afterEnter:function(){this.show=!0},afterLeave:function(){this.show=!1}},data:function(){return{localActive:this.active&&!this.disabled,show:!1}},mounted:function(){this.show=this.localActive},computed:{tabClasses:function(){return[\"tab-pane\",this.$parent&&this.$parent.card&&!this.noBody?\"card-body\":\"\",this.show?\"show\":\"\",this.computedFade?\"fade\":\"\",this.disabled?\"disabled\":\"\",this.localActive?\"active\":\"\"]},controlledBy:function(){return this.buttonId||this.safeId(\"__BV_tab_button__\")},computedFade:function(){return this.$parent.fade},computedLazy:function(){return this.$parent.lazy},_isTab:function(){return!0}},props:{active:{type:Boolean,default:!1},tag:{type:String,default:\"div\"},buttonId:{type:String,default:\"\"},title:{type:String,default:\"\"},titleItemClass:{type:[String,Array,Object],default:null},titleLinkClass:{type:[String,Array,Object],default:null},headHtml:{type:String,default:null},disabled:{type:Boolean,default:!1},noBody:{type:Boolean,default:!1},href:{type:String,default:\"#\"}}}},VQrr:function(e,t,n){\"use strict\";var i=n(\"hpTH\"),r=n(\"7C8l\"),o=n(\"OfYj\");t.a={components:{bImg:i.a},mixins:[o.a],render:function(e){var t=this,n=t.$slots,i=n.img;i||!t.imgSrc&&!t.imgBlank||(i=e(\"b-img\",{props:{fluidGrow:!0,block:!0,src:t.imgSrc,blank:t.imgBlank,blankColor:t.imgBlankColor,width:t.computedWidth,height:t.computedHeight,alt:t.imgAlt}}));var r=e(t.contentTag,{class:t.contentClasses},[t.caption?e(t.captionTag,{domProps:{innerHTML:t.caption}}):e(!1),t.text?e(t.textTag,{domProps:{innerHTML:t.text}}):e(!1),n.default]);return e(\"div\",{class:[\"carousel-item\"],style:{background:t.background},attrs:{id:t.safeId(),role:\"listitem\"}},[i,r])},props:{imgSrc:{type:String,default:function(){return this&&this.src?(n.i(r.a)(\"b-carousel-slide: prop 'src' has been deprecated. Use 'img-src' instead\"),this.src):null}},src:{type:String},imgAlt:{type:String},imgWidth:{type:[Number,String]},imgHeight:{type:[Number,String]},imgBlank:{type:Boolean,default:!1},imgBlankColor:{type:String,default:\"transparent\"},contentVisibleUp:{type:String},contentTag:{type:String,default:\"div\"},caption:{type:String},captionTag:{type:String,default:\"h3\"},text:{type:String},textTag:{type:String,default:\"p\"},background:{type:String}},computed:{contentClasses:function(){return[\"carousel-caption\",this.contentVisibleUp?\"d-none\":\"\",this.contentVisibleUp?\"d-\"+this.contentVisibleUp+\"-block\":\"\"]},computedWidth:function(){return this.imgWidth||this.$parent.imgWidth},computedHeight:function(){return this.imgHeight||this.$parent.imgHeight}}}},\"VU/8\":function(e,t){e.exports=function(e,t,n,i,r,o){var s,a=e=e||{},l=typeof e.default;\"object\"!==l&&\"function\"!==l||(s=e,a=e.default);var c=\"function\"==typeof a?a.options:a;t&&(c.render=t.render,c.staticRenderFns=t.staticRenderFns,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId=r);var u;if(o?(u=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=u):i&&(u=i),u){var h=c.functional,d=h?c.render:c.beforeCreate;h?(c._injectStyles=u,c.render=function(e,t){return u.call(t),d(e,t)}):c.beforeCreate=d?[].concat(d,u):[u]}return{esModule:s,exports:a,options:c}}},VXBj:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i,r,o=\" \",s=e.level,a=e.dataLevel,l=e.schema[t],c=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+\"/\"+t,h=!e.opts.allErrors,d=\"data\"+(a||\"\"),f=e.opts.$data&&l&&l.$data;f?(o+=\" var schema\"+s+\" = \"+e.util.getData(l.$data,a,e.dataPathArr)+\"; \",r=\"schema\"+s):r=l;var p=\"maxProperties\"==t?\">\":\"<\";o+=\"if ( \",f&&(o+=\" (\"+r+\" !== undefined && typeof \"+r+\" != 'number') || \"),o+=\" Object.keys(\"+d+\").length \"+p+\" \"+r+\") { \";var i=t,m=m||[];m.push(o),o=\"\",!1!==e.createErrors?(o+=\" { keyword: '\"+(i||\"_limitProperties\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(u)+\" , params: { limit: \"+r+\" } \",!1!==e.opts.messages&&(o+=\" , message: 'should NOT have \",o+=\"maxProperties\"==t?\"more\":\"less\",o+=\" than \",o+=f?\"' + \"+r+\" + '\":\"\"+l,o+=\" properties' \"),e.opts.verbose&&(o+=\" , schema:  \",o+=f?\"validate.schema\"+c:\"\"+l,o+=\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),o+=\" } \"):o+=\" {} \";var g=o;return o=m.pop(),!e.compositeRule&&h?e.async?o+=\" throw new ValidationError([\"+g+\"]); \":o+=\" validate.errors = [\"+g+\"]; return false; \":o+=\" var err = \"+g+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",o+=\"} \",h&&(o+=\" else { \"),o}},VhEN:function(e,t,n){\"use strict\";var i=n(\"OfYj\"),r=n(\"/gqF\"),o=n(\"TMTb\"),s=n(\"dfnb\"),a=n(\"GnGf\");t.a={mixins:[i.a,r.a,o.a,s.a],render:function(e){var t=this,n=e(\"input\",{ref:\"input\",class:[{\"form-control-file\":t.plain,\"custom-file-input\":t.custom,focus:t.custom&&t.hasFocus},t.stateClass],attrs:{type:\"file\",id:t.safeId(),name:t.name,disabled:t.disabled,required:t.required,capture:t.capture||null,accept:t.accept||null,multiple:t.multiple,webkitdirectory:t.directory,\"aria-required\":t.required?\"true\":null,\"aria-describedby\":t.plain?null:t.safeId(\"_BV_file_control_\")},on:{change:t.onFileChange,focusin:t.focusHandler,focusout:t.focusHandler}});if(t.plain)return n;var i=e(\"label\",{class:[\"custom-file-label\",t.dragging?\"dragging\":null],attrs:{id:t.safeId(\"_BV_file_control_\")}},t.selectLabel);return e(\"div\",{class:[\"custom-file\",\"b-form-file\",t.stateClass],attrs:{id:t.safeId(\"_BV_file_outer_\")},on:{dragover:t.dragover}},[n,i])},data:function(){return{selectedFile:null,dragging:!1,hasFocus:!1}},props:{accept:{type:String,default:\"\"},capture:{type:Boolean,default:!1},placeholder:{type:String,default:void 0},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},noTraverse:{type:Boolean,default:!1},noDrop:{type:Boolean,default:!1}},computed:{selectLabel:function(){return this.selectedFile&&0!==this.selectedFile.length?this.multiple?1===this.selectedFile.length?this.selectedFile[0].name:this.selectedFile.map(function(e){return e.name}).join(\", \"):this.selectedFile.name:this.placeholder}},watch:{selectedFile:function(e,t){e!==t&&(!e&&this.multiple?this.$emit(\"input\",[]):this.$emit(\"input\",e))}},methods:{focusHandler:function(e){this.plain||\"focusout\"===e.type?this.hasFocus=!1:this.hasFocus=!0},reset:function(){try{this.$refs.input.value=\"\"}catch(e){}this.$refs.input.type=\"\",this.$refs.input.type=\"file\",this.selectedFile=this.multiple?[]:null},onFileChange:function(e){var t=this;this.$emit(\"change\",e);var i=e.dataTransfer&&e.dataTransfer.items;if(i&&!this.noTraverse){for(var r=[],o=0;o<i.length;o++){var s=i[o].webkitGetAsEntry();s&&r.push(this.traverseFileTree(s))}return void Promise.all(r).then(function(e){t.setFiles(n.i(a.a)(e))})}this.setFiles(e.target.files||e.dataTransfer.files)},setFiles:function(e){if(!e)return void(this.selectedFile=null);if(!this.multiple)return void(this.selectedFile=e[0]);for(var t=[],n=0;n<e.length;n++)e[n].type.match(this.accept)&&t.push(e[n]);this.selectedFile=t},dragover:function(e){e.preventDefault(),e.stopPropagation(),!this.noDrop&&this.custom&&(this.dragging=!0,e.dataTransfer.dropEffect=\"copy\")},dragleave:function(e){e.preventDefault(),e.stopPropagation(),this.dragging=!1},drop:function(e){e.preventDefault(),e.stopPropagation(),this.noDrop||(this.dragging=!1,e.dataTransfer.files&&e.dataTransfer.files.length>0&&this.onFileChange(e))},traverseFileTree:function(e,t){var i=this;return new Promise(function(r){t=t||\"\",e.isFile?e.file(function(e){e.$path=t,r(e)}):e.isDirectory&&e.createReader().readEntries(function(o){for(var s=[],l=0;l<o.length;l++)s.push(i.traverseFileTree(o[l],t+e.name+\"/\"));Promise.all(s).then(function(e){r(n.i(a.a)(e))})})})}}}},\"W/FM\":function(e,t,n){\"use strict\";var i=n(\"etPs\"),r=n(\"2PZM\"),o=n(\"il3A\"),s=n(\"/CDJ\"),a=n.i(i.c)();a.href.default=void 0,a.to.default=void 0;var l=n.i(s.a)(a,{tag:{type:String,default:\"div\"}});t.a={functional:!0,props:l,render:function(e,t){var s=t.props,l=t.data,c=t.children,u=Boolean(s.to||s.href);return e(u?i.b:s.tag,n.i(r.a)(l,{staticClass:\"navbar-brand\",props:u?n.i(o.a)(a,s):{}}),c)}}},W2nU:function(e,t){function n(){throw new Error(\"setTimeout has not been defined\")}function i(){throw new Error(\"clearTimeout has not been defined\")}function r(e){if(u===setTimeout)return setTimeout(e,0);if((u===n||!u)&&setTimeout)return u=setTimeout,setTimeout(e,0);try{return u(e,0)}catch(t){try{return u.call(null,e,0)}catch(t){return u.call(this,e,0)}}}function o(e){if(h===clearTimeout)return clearTimeout(e);if((h===i||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(e);try{return h(e)}catch(t){try{return h.call(null,e)}catch(t){return h.call(this,e)}}}function s(){m&&f&&(m=!1,f.length?p=f.concat(p):g=-1,p.length&&a())}function a(){if(!m){var e=r(s);m=!0;for(var t=p.length;t;){for(f=p,p=[];++g<t;)f&&f[g].run();g=-1,t=p.length}f=null,m=!1,o(e)}}function l(e,t){this.fun=e,this.array=t}function c(){}var u,h,d=e.exports={};!function(){try{u=\"function\"==typeof setTimeout?setTimeout:n}catch(e){u=n}try{h=\"function\"==typeof clearTimeout?clearTimeout:i}catch(e){h=i}}();var f,p=[],m=!1,g=-1;d.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];p.push(new l(e,t)),1!==p.length||m||r(a)},l.prototype.run=function(){this.fun.apply(null,this.array)},d.title=\"browser\",d.browser=!0,d.env={},d.argv=[],d.version=\"\",d.versions={},d.on=c,d.addListener=c,d.once=c,d.off=c,d.removeListener=c,d.removeAllListeners=c,d.emit=c,d.prependListener=c,d.prependOnceListener=c,d.listeners=function(e){return[]},d.binding=function(e){throw new Error(\"process.binding is not supported\")},d.cwd=function(){return\"/\"},d.chdir=function(e){throw new Error(\"process.chdir is not supported\")},d.umask=function(){return 0}},\"WF/B\":function(e,t,n){\"use strict\";n.d(t,\"b\",function(){return r});var i=n(\"2PZM\"),r={src:{type:String,default:null,required:!0},alt:{type:String,default:null},top:{type:Boolean,default:!1},bottom:{type:Boolean,default:!1},fluid:{type:Boolean,default:!1}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=(t.slots,\"card-img\");return r.top?s+=\"-top\":r.bottom&&(s+=\"-bottom\"),e(\"img\",n.i(i.a)(o,{staticClass:s,class:{\"img-fluid\":r.fluid},attrs:{src:r.src,alt:r.alt}}))}}},WVvG:function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(\"n9qK\"),r=n(\"G+QY\"),o=n(\"TaNr\"),s=n(\"rd7L\"),a=n(\"inTl\");n.d(t,\"Toggle\",function(){return i.a}),n.d(t,\"Modal\",function(){return r.a}),n.d(t,\"Scrollspy\",function(){return o.a}),n.d(t,\"Tooltip\",function(){return s.a}),n.d(t,\"Popover\",function(){return a.a})},WnFU:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={tag:{type:String,default:\"div\"},fluid:{type:Boolean,default:!1}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.children;return e(r.tag,n.i(i.a)(o,{class:{container:!r.fluid,\"container-fluid\":r.fluid}}),s)}}},\"X/jh\":function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,\"b\",function(){return c});var r=n(\"2PZM\"),o=n(\"7+8w\"),s=n(\"m9Yj\"),a=n(\"/CDJ\"),l=n(\"Ch1r\"),c=n.i(a.a)({},n.i(s.a)(l.a.props,o.a.bind(null,\"footer\")),{footer:{type:String,default:null},footerClass:{type:[String,Object,Array],default:null}});t.a={functional:!0,props:c,render:function(e,t){var o,s=t.props,a=t.data,l=t.slots;return e(s.footerTag,n.i(r.a)(a,{staticClass:\"card-footer\",class:[s.footerClass,(o={},i(o,\"bg-\"+s.footerBgVariant,Boolean(s.footerBgVariant)),i(o,\"border-\"+s.footerBorderVariant,Boolean(s.footerBorderVariant)),i(o,\"text-\"+s.footerTextVariant,Boolean(s.footerTextVariant)),o)]}),l().default||[e(\"div\",{domProps:{innerHTML:s.footer}})])}}},X17e:function(e,t,n){\"use strict\";function i(e,t){return e.map(function(e,t){return[t,e]}).sort(function(e,t){return this(e[1],t[1])||e[0]-t[0]}.bind(t)).map(function(e){return e[1]})}t.a=i},X1Qo:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"2PZM\"),o=n(\"GnGf\"),s={vertical:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(e){return n.i(o.d)([\"sm\",\"\",\"lg\"],e)}},tag:{type:String,default:\"div\"},ariaRole:{type:String,default:\"group\"}};t.a={functional:!0,props:s,render:function(e,t){var o=t.props,s=t.data,a=t.children;return e(o.tag,n.i(r.a)(s,{class:i({\"btn-group\":!o.vertical,\"btn-group-vertical\":o.vertical},\"btn-group-\"+o.size,Boolean(o.size)),attrs:{role:o.ariaRole}}),a)}}},X8DO:function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},XHeZ:function(e,t,n){\"use strict\";var i=n(\"OfYj\"),r=n(\"ddAL\"),o=n(\"E8q/\"),s=n(\"zj2Q\");n.n(s);t.a={mixins:[i.a,r.a],components:{bButton:o.a},render:function(e){var t=this,n=e(!1);t.split&&(n=e(\"b-button\",{ref:\"button\",props:{disabled:t.disabled,variant:t.variant,size:t.size},attrs:{id:t.safeId(\"_BV_button_\")},on:{click:t.click}},[t.$slots[\"button-content\"]||t.$slots.text||t.text]));var i=e(\"b-button\",{ref:\"toggle\",class:t.toggleClasses,props:{variant:t.variant,size:t.size,disabled:t.disabled},attrs:{id:t.safeId(\"_BV_toggle_\"),\"aria-haspopup\":\"true\",\"aria-expanded\":t.visible?\"true\":\"false\"},on:{click:t.toggle,keydown:t.toggle}},[t.split?e(\"span\",{class:[\"sr-only\"]},[t.toggleText]):t.$slots[\"button-content\"]||t.$slots.text||t.text]),r=e(\"div\",{ref:\"menu\",class:t.menuClasses,attrs:{role:t.role,\"aria-labelledby\":t.safeId(t.split?\"_BV_toggle_\":\"_BV_button_\")},on:{mouseover:t.onMouseOver,keydown:t.onKeydown}},[this.$slots.default]);return e(\"div\",{attrs:{id:t.safeId()},class:t.dropdownClasses},[n,i,r])},props:{split:{type:Boolean,default:!1},toggleText:{type:String,default:\"Toggle Dropdown\"},size:{type:String,default:null},variant:{type:String,default:null},toggleClass:{type:[String,Array],default:null},noCaret:{type:Boolean,default:!1},role:{type:String,default:\"menu\"},boundary:{type:[String,Object],default:\"scrollParent\"}},computed:{dropdownClasses:function(){var e=\"\";return\"scrollParent\"===this.boundary&&this.boundary||(e=\"position-static\"),[\"btn-group\",\"b-dropdown\",\"dropdown\",this.dropup?\"dropup\":\"\",this.visible?\"show\":\"\",e]},menuClasses:function(){return[\"dropdown-menu\",this.right?\"dropdown-menu-right\":\"\",this.visible?\"show\":\"\"]},toggleClasses:function(){return[{\"dropdown-toggle\":!this.noCaret||this.split,\"dropdown-toggle-split\":this.split},this.toggleClass]}}}},YfH7:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"2PZM\"),o=n(\"gMle\"),s=n(\"Hea7\"),a=n(\"8mh2\"),l={id:{type:String,default:null},size:{type:String,default:null},prepend:{type:String,default:null},append:{type:String,default:null},tag:{type:String,default:\"div\"}};t.a={functional:!0,props:l,render:function(e,t){var l=t.props,c=t.data,u=t.slots,h=u(),d=[];return l.prepend&&d.push(e(o.a,[e(a.a,{domProps:{innerHTML:l.prepend}})])),h.prepend&&d.push(e(o.a,h.prepend)),d.push(h.default),l.append&&d.push(e(s.a,[e(a.a,{domProps:{innerHTML:l.append}})])),h.append&&d.push(e(s.a,h.append)),e(l.tag,n.i(r.a)(c,{staticClass:\"input-group\",class:i({},\"input-group-\"+l.size,Boolean(l.size)),attrs:{id:l.id||null,role:\"group\"}}),d)}}},Ymj4:function(e,t,n){\"use strict\";var i=n(\"f9FU\"),r=n(\"qHHr\"),o=n(\"W/FM\"),s=n(\"C9Xq\"),a=n(\"qIPk\"),l=n(\"yTKe\"),c=n(\"y47G\"),u=n(\"q21c\"),h={bNavbar:i.a,bNavbarNav:r.a,bNavbarBrand:o.a,bNavbarToggle:s.a,bNavToggle:s.a},d={install:function(e){n.i(u.c)(e,h),e.use(a.a),e.use(l.a),e.use(c.a)}};n.i(u.a)(d),t.a=d},YrmI:function(e,t,n){\"use strict\";var i=n(\"vlc0\"),r=n(\"y2ie\"),o=n(\"QmdE\"),s={};s.create=function(e,t){t=t||{},void 0===t.statusBar&&(t.statusBar=!0),this.options=t,t.indentation?this.indentation=Number(t.indentation):this.indentation=2;var s=t.ace?t.ace:i;if(this.mode=\"code\"==t.mode?\"code\":\"text\",\"code\"==this.mode&&void 0===s&&(this.mode=\"text\",console.warn(\"Failed to load Ace editor, falling back to plain text mode. Please use a JSONEditor bundle including Ace, or pass Ace as via the configuration option `ace`.\")),this.theme=t.theme||\"ace/theme/jsoneditor\",\"ace/theme/jsoneditor\"===this.theme&&s)try{n(\"G6Bx\")}catch(e){console.error(e)}var a=this;this.container=e,this.dom={},this.aceEditor=void 0,this.textarea=void 0,this.validateSchema=null,this._debouncedValidate=o.debounce(this.validate.bind(this),this.DEBOUNCE_INTERVAL),this.width=e.clientWidth,this.height=e.clientHeight,this.frame=document.createElement(\"div\"),this.frame.className=\"jsoneditor jsoneditor-mode-\"+this.options.mode,this.frame.onclick=function(e){e.preventDefault()},this.frame.onkeydown=function(e){a._onKeyDown(e)},this.menu=document.createElement(\"div\"),this.menu.className=\"jsoneditor-menu\",this.frame.appendChild(this.menu);var l=document.createElement(\"button\");l.type=\"button\",l.className=\"jsoneditor-format\",l.title=\"Format JSON data, with proper indentation and line feeds (Ctrl+\\\\)\",this.menu.appendChild(l),l.onclick=function(){try{a.format(),a._onChange()}catch(e){a._onError(e)}};var c=document.createElement(\"button\");c.type=\"button\",c.className=\"jsoneditor-compact\",c.title=\"Compact JSON data, remove all whitespaces (Ctrl+Shift+\\\\)\",this.menu.appendChild(c),c.onclick=function(){try{a.compact(),a._onChange()}catch(e){a._onError(e)}};var u=document.createElement(\"button\");u.type=\"button\",u.className=\"jsoneditor-repair\",u.title=\"Repair JSON: fix quotes and escape characters, remove comments and JSONP notation, turn JavaScript objects into JSON.\",this.menu.appendChild(u),u.onclick=function(){try{a.repair(),a._onChange()}catch(e){a._onError(e)}},this.options&&this.options.modes&&this.options.modes.length&&(this.modeSwitcher=new r(this.menu,this.options.modes,this.options.mode,function(e){a.setMode(e),a.modeSwitcher.focus()}));var h={},d=this.options.onEditable&&typeof(\"function\"===this.options.onEditable)&&!this.options.onEditable(h);if(this.content=document.createElement(\"div\"),this.content.className=\"jsoneditor-outer\",this.frame.appendChild(this.content),this.container.appendChild(this.frame),\"code\"==this.mode){this.editorDom=document.createElement(\"div\"),this.editorDom.style.height=\"100%\",this.editorDom.style.width=\"100%\",this.content.appendChild(this.editorDom);var f=s.edit(this.editorDom);f.$blockScrolling=1/0,f.setTheme(this.theme),f.setOptions({readOnly:d}),f.setShowPrintMargin(!1),f.setFontSize(13),f.getSession().setMode(\"ace/mode/json\"),f.getSession().setTabSize(this.indentation),f.getSession().setUseSoftTabs(!0),f.getSession().setUseWrapMode(!0),f.commands.bindKey(\"Ctrl-L\",null),f.commands.bindKey(\"Command-L\",null),this.aceEditor=f,this.hasOwnProperty(\"editor\")||Object.defineProperty(this,\"editor\",{get:function(){return console.warn('Property \"editor\" has been renamed to \"aceEditor\".'),a.aceEditor},set:function(e){console.warn('Property \"editor\" has been renamed to \"aceEditor\".'),a.aceEditor=e}});var p=document.createElement(\"a\");p.appendChild(document.createTextNode(\"powered by ace\")),p.href=\"http://ace.ajax.org\",p.target=\"_blank\",p.className=\"jsoneditor-poweredBy\",p.onclick=function(){window.open(p.href,p.target)},this.menu.appendChild(p),f.on(\"change\",this._onChange.bind(this)),f.on(\"changeSelection\",this._onSelect.bind(this))}else{var m=document.createElement(\"textarea\");m.className=\"jsoneditor-text\",m.spellcheck=!1,this.content.appendChild(m),this.textarea=m,this.textarea.readOnly=d,null===this.textarea.oninput?this.textarea.oninput=this._onChange.bind(this):this.textarea.onchange=this._onChange.bind(this),m.onselect=this._onSelect.bind(this),m.onmousedown=this._onMouseDown.bind(this),m.onblur=this._onBlur.bind(this)}var g=document.createElement(\"div\");if(g.className=\"validation-errors-container\",this.dom.validationErrorsContainer=g,this.frame.appendChild(g),t.statusBar){o.addClassName(this.content,\"has-status-bar\"),this.curserInfoElements={};var v=document.createElement(\"div\");this.dom.statusBar=v,v.className=\"jsoneditor-statusbar\",this.frame.appendChild(v);var y=document.createElement(\"span\");y.className=\"jsoneditor-curserinfo-label\",y.innerText=\"Ln:\";var b=document.createElement(\"span\");b.className=\"jsoneditor-curserinfo-val\",b.innerText=\"1\",v.appendChild(y),v.appendChild(b);var w=document.createElement(\"span\");w.className=\"jsoneditor-curserinfo-label\",w.innerText=\"Col:\";var C=document.createElement(\"span\");C.className=\"jsoneditor-curserinfo-val\",C.innerText=\"1\",v.appendChild(w),v.appendChild(C),this.curserInfoElements.colVal=C,this.curserInfoElements.lnVal=b;var A=document.createElement(\"span\");A.className=\"jsoneditor-curserinfo-label\",A.innerText=\"characters selected\",A.style.display=\"none\";var E=document.createElement(\"span\");E.className=\"jsoneditor-curserinfo-count\",E.innerText=\"0\",E.style.display=\"none\",this.curserInfoElements.countLabel=A,this.curserInfoElements.countVal=E,v.appendChild(E),v.appendChild(A)}this.setSchema(this.options.schema,this.options.schemaRefs)},s._onChange=function(){if(this._debouncedValidate(),this.options.onChange)try{this.options.onChange()}catch(e){console.error(\"Error in onChange callback: \",e)}},s._onSelect=function(){this.options.statusBar&&this._updateCursorInfoDisplay()},s._onKeyDown=function(e){var t=e.which||e.keyCode,n=!1;220==t&&e.ctrlKey&&(e.shiftKey?(this.compact(),this._onChange()):(this.format(),this._onChange()),n=!0),n&&(e.preventDefault(),e.stopPropagation()),this._updateCursorInfoDisplay()},s._onMouseDown=function(e){this._updateCursorInfoDisplay()},s._onBlur=function(e){this._updateCursorInfoDisplay()},s._updateCursorInfoDisplay=function(){function e(){r.curserInfoElements.countVal.innerText!==i&&(r.curserInfoElements.countVal.innerText=i,r.curserInfoElements.countVal.style.display=i?\"inline\":\"none\",r.curserInfoElements.countLabel.style.display=i?\"inline\":\"none\"),r.curserInfoElements.lnVal.innerText=t,r.curserInfoElements.colVal.innerText=n}var t,n,i,r=this;if(this.options.statusBar)if(this.textarea)setTimeout(function(){var s=o.getInputSelection(r.textarea);t=s.row,n=s.col,s.start!==s.end&&(i=s.end-s.start),e()},0);else if(this.aceEditor&&this.curserInfoElements){var s=this.aceEditor.getCursorPosition(),a=this.aceEditor.getSelectedText();t=s.row+1,n=s.column+1,i=a.length,e()}},s.destroy=function(){this.aceEditor&&(this.aceEditor.destroy(),this.aceEditor=null),this.frame&&this.container&&this.frame.parentNode==this.container&&this.container.removeChild(this.frame),this.modeSwitcher&&(this.modeSwitcher.destroy(),this.modeSwitcher=null),this.textarea=null,this._debouncedValidate=null},s.compact=function(){var e=this.get(),t=JSON.stringify(e);this.setText(t)},s.format=function(){var e=this.get(),t=JSON.stringify(e,null,this.indentation);this.setText(t)},s.repair=function(){var e=this.getText(),t=o.sanitize(e);this.setText(t)},s.focus=function(){this.textarea&&this.textarea.focus(),this.aceEditor&&this.aceEditor.focus()},s.resize=function(){if(this.aceEditor){this.aceEditor.resize(!1)}},s.set=function(e){this.setText(JSON.stringify(e,null,this.indentation))},s.get=function(){var e,t=this.getText();try{e=o.parse(t)}catch(n){t=o.sanitize(t),e=o.parse(t)}return e},s.getText=function(){return this.textarea?this.textarea.value:this.aceEditor?this.aceEditor.getValue():\"\"},s.setText=function(e){var t;if(t=!0===this.options.escapeUnicode?o.escapeUnicodeChars(e):e,this.textarea&&(this.textarea.value=t),this.aceEditor){var n=this.options.onChange;this.options.onChange=null,this.aceEditor.setValue(t,-1),this.options.onChange=n}this.validate()},s.validate=function(){this.dom.validationErrors&&(this.dom.validationErrors.parentNode.removeChild(this.dom.validationErrors),this.dom.validationErrors=null,this.content.style.marginBottom=\"\",this.content.style.paddingBottom=\"\");var e,t=!1,n=[];try{e=this.get(),t=!0}catch(e){}if(t&&this.validateSchema){this.validateSchema(e)||(n=this.validateSchema.errors.map(function(e){return o.improveSchemaError(e)}))}if(n.length>0){if(n.length>3){n=n.slice(0,3);var i=this.validateSchema.errors.length-3;n.push(\"(\"+i+\" more errors...)\")}var r=document.createElement(\"div\");r.innerHTML='<table class=\"jsoneditor-text-errors\"><tbody>'+n.map(function(e){return'<tr><td><button class=\"jsoneditor-schema-error\"></button></td>'+(\"string\"==typeof e?'<td colspan=\"2\"><pre>'+e+\"</pre></td>\":\"<td>\"+e.dataPath+\"</td><td>\"+e.message+\"</td>\")+\"</tr>\"}).join(\"\")+\"</tbody></table>\",this.dom.validationErrors=r,this.dom.validationErrorsContainer.appendChild(r);var s=r.clientHeight+(this.dom.statusBar?this.dom.statusBar.clientHeight:0);this.content.style.marginBottom=-s+\"px\",this.content.style.paddingBottom=s+\"px\"}if(this.aceEditor){this.aceEditor.resize(!1)}},e.exports=[{mode:\"text\",mixin:s,data:\"text\",load:s.format},{mode:\"code\",mixin:s,data:\"text\",load:s.format}]},Z09Z:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,\"b\",function(){return c});var r=n(\"2PZM\"),o=n(\"7+8w\"),s=n(\"m9Yj\"),a=n(\"/CDJ\"),l=n(\"Ch1r\"),c=n.i(a.a)({},n.i(s.a)(l.a.props,o.a.bind(null,\"body\")),{bodyClass:{type:[String,Object,Array],default:null},title:{type:String,default:null},titleTag:{type:String,default:\"h4\"},subTitle:{type:String,default:null},subTitleTag:{type:String,default:\"h6\"},overlay:{type:Boolean,default:!1}});t.a={functional:!0,props:c,render:function(e,t){var o,s=t.props,a=t.data,l=t.slots,c=[];return s.title&&c.push(e(s.titleTag,{staticClass:\"card-title\",domProps:{innerHTML:s.title}})),s.subTitle&&c.push(e(s.subTitleTag,{staticClass:\"card-subtitle mb-2 text-muted\",domProps:{innerHTML:s.subTitle}})),c.push(l().default),e(s.bodyTag,n.i(r.a)(a,{staticClass:\"card-body\",class:[(o={\"card-img-overlay\":s.overlay},i(o,\"bg-\"+s.bodyBgVariant,Boolean(s.bodyBgVariant)),i(o,\"border-\"+s.bodyBorderVariant,Boolean(s.bodyBorderVariant)),i(o,\"text-\"+s.bodyTextVariant,Boolean(s.bodyTextVariant)),o),s.bodyClass||{}]}),c)}}},Ze8Z:function(e,t,n){\"use strict\";var i=n(\"Ea66\"),r=n(\"lYmS\"),o=n(\"q21c\"),s={bFormRadio:i.a,bRadio:i.a,bFormRadioGroup:r.a,bRadioGroup:r.a},a={install:function(e){n.i(o.c)(e,s)}};n.i(o.a)(a),t.a=a},Zgw8:function(e,t,n){\"use strict\";(function(e){function n(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}function i(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},ce))}}function r(e){var t={};return e&&\"[object Function]\"===t.toString.call(e)}function o(e,t){if(1!==e.nodeType)return[];var n=getComputedStyle(e,null);return t?n[t]:n}function s(e){return\"HTML\"===e.nodeName?e:e.parentNode||e.host}function a(e){if(!e)return document.body;switch(e.nodeName){case\"HTML\":case\"BODY\":return e.ownerDocument.body;case\"#document\":return e.body}var t=o(e),n=t.overflow,i=t.overflowX;return/(auto|scroll)/.test(n+t.overflowY+i)?e:a(s(e))}function l(e){var t=e&&e.offsetParent,n=t&&t.nodeName;return n&&\"BODY\"!==n&&\"HTML\"!==n?-1!==[\"TD\",\"TABLE\"].indexOf(t.nodeName)&&\"static\"===o(t,\"position\")?l(t):t:e?e.ownerDocument.documentElement:document.documentElement}function c(e){var t=e.nodeName;return\"BODY\"!==t&&(\"HTML\"===t||l(e.firstElementChild)===e)}function u(e){return null!==e.parentNode?u(e.parentNode):e}function h(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?e:t,r=n?t:e,o=document.createRange();o.setStart(i,0),o.setEnd(r,0);var s=o.commonAncestorContainer;if(e!==s&&t!==s||i.contains(r))return c(s)?s:l(s);var a=u(e);return a.host?h(a.host,t):h(e,u(t).host)}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"top\",n=\"top\"===t?\"scrollTop\":\"scrollLeft\",i=e.nodeName;if(\"BODY\"===i||\"HTML\"===i){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[n]}return e[n]}function f(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=d(t,\"top\"),r=d(t,\"left\"),o=n?-1:1;return e.top+=i*o,e.bottom+=i*o,e.left+=r*o,e.right+=r*o,e}function p(e,t){var n=\"x\"===t?\"Left\":\"Top\",i=\"Left\"===n?\"Right\":\"Bottom\";return parseFloat(e[\"border\"+n+\"Width\"],10)+parseFloat(e[\"border\"+i+\"Width\"],10)}function m(e,t,n,i){return Math.max(t[\"offset\"+e],t[\"scroll\"+e],n[\"client\"+e],n[\"offset\"+e],n[\"scroll\"+e],pe()?n[\"offset\"+e]+i[\"margin\"+(\"Height\"===e?\"Top\":\"Left\")]+i[\"margin\"+(\"Height\"===e?\"Bottom\":\"Right\")]:0)}function g(){var e=document.body,t=document.documentElement,n=pe()&&getComputedStyle(t);return{height:m(\"Height\",e,t,n),width:m(\"Width\",e,t,n)}}function v(e){return ye({},e,{right:e.left+e.width,bottom:e.top+e.height})}function y(e){var t={};if(pe())try{t=e.getBoundingClientRect();var n=d(e,\"top\"),i=d(e,\"left\");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}catch(e){}else t=e.getBoundingClientRect();var r={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},s=\"HTML\"===e.nodeName?g():{},a=s.width||e.clientWidth||r.right-r.left,l=s.height||e.clientHeight||r.bottom-r.top,c=e.offsetWidth-a,u=e.offsetHeight-l;if(c||u){var h=o(e);c-=p(h,\"x\"),u-=p(h,\"y\"),r.width-=c,r.height-=u}return v(r)}function b(e,t){var n=pe(),i=\"HTML\"===t.nodeName,r=y(e),s=y(t),l=a(e),c=o(t),u=parseFloat(c.borderTopWidth,10),h=parseFloat(c.borderLeftWidth,10),d=v({top:r.top-s.top-u,left:r.left-s.left-h,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!n&&i){var p=parseFloat(c.marginTop,10),m=parseFloat(c.marginLeft,10);d.top-=u-p,d.bottom-=u-p,d.left-=h-m,d.right-=h-m,d.marginTop=p,d.marginLeft=m}return(n?t.contains(l):t===l&&\"BODY\"!==l.nodeName)&&(d=f(d,t)),d}function w(e){var t=e.ownerDocument.documentElement,n=b(e,t),i=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=d(t),s=d(t,\"left\");return v({top:o-n.top+n.marginTop,left:s-n.left+n.marginLeft,width:i,height:r})}function C(e){var t=e.nodeName;return\"BODY\"!==t&&\"HTML\"!==t&&(\"fixed\"===o(e,\"position\")||C(s(e)))}function A(e,t,n,i){var r={top:0,left:0},o=h(e,t);if(\"viewport\"===i)r=w(o);else{var l=void 0;\"scrollParent\"===i?(l=a(s(t)),\"BODY\"===l.nodeName&&(l=e.ownerDocument.documentElement)):l=\"window\"===i?e.ownerDocument.documentElement:i;var c=b(l,o);if(\"HTML\"!==l.nodeName||C(o))r=c;else{var u=g(),d=u.height,f=u.width;r.top+=c.top-c.marginTop,r.bottom=d+c.top,r.left+=c.left-c.marginLeft,r.right=f+c.left}}return r.left+=n,r.top+=n,r.right-=n,r.bottom-=n,r}function E(e){return e.width*e.height}function x(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf(\"auto\"))return e;var s=A(n,i,o,r),a={top:{width:s.width,height:t.top-s.top},right:{width:s.right-t.right,height:s.height},bottom:{width:s.width,height:s.bottom-t.bottom},left:{width:t.left-s.left,height:s.height}},l=Object.keys(a).map(function(e){return ye({key:e},a[e],{area:E(a[e])})}).sort(function(e,t){return t.area-e.area}),c=l.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),u=c.length>0?c[0].key:l[0].key,h=e.split(\"-\")[1];return u+(h?\"-\"+h:\"\")}function F(e,t,n){return b(n,h(t,n))}function S(e){var t=getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function $(e){var t={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function k(e,t,n){n=n.split(\"-\")[0];var i=S(e),r={width:i.width,height:i.height},o=-1!==[\"right\",\"left\"].indexOf(n),s=o?\"top\":\"left\",a=o?\"left\":\"top\",l=o?\"height\":\"width\",c=o?\"width\":\"height\";return r[s]=t[s]+t[l]/2-i[l]/2,r[a]=n===a?t[a]-i[c]:t[$(a)],r}function _(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function B(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=_(e,function(e){return e[t]===n});return e.indexOf(i)}function D(e,t,n){return(void 0===n?e:e.slice(0,B(e,\"name\",n))).forEach(function(e){e.function&&console.warn(\"`modifier.function` is deprecated, use `modifier.fn`!\");var n=e.function||e.fn;e.enabled&&r(n)&&(t.offsets.popper=v(t.offsets.popper),t.offsets.reference=v(t.offsets.reference),t=n(t,e))}),t}function T(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=F(this.state,this.popper,this.reference),e.placement=x(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=k(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=\"absolute\",e=D(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function L(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function O(e){for(var t=[!1,\"ms\",\"Webkit\",\"Moz\",\"O\"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;i<t.length-1;i++){var r=t[i],o=r?\"\"+r+n:e;if(void 0!==document.body.style[o])return o}return null}function R(){return this.state.isDestroyed=!0,L(this.modifiers,\"applyStyle\")&&(this.popper.removeAttribute(\"x-placement\"),this.popper.style.left=\"\",this.popper.style.position=\"\",this.popper.style.top=\"\",this.popper.style[O(\"transform\")]=\"\"),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function P(e){var t=e.ownerDocument;return t?t.defaultView:window}function M(e,t,n,i){var r=\"BODY\"===e.nodeName,o=r?e.ownerDocument.defaultView:e;o.addEventListener(t,n,{passive:!0}),r||M(a(o.parentNode),t,n,i),i.push(o)}function I(e,t,n,i){n.updateBound=i,P(e).addEventListener(\"resize\",n.updateBound,{passive:!0});var r=a(e);return M(r,\"scroll\",n.updateBound,n.scrollParents),n.scrollElement=r,n.eventsEnabled=!0,n}function j(){this.state.eventsEnabled||(this.state=I(this.reference,this.options,this.state,this.scheduleUpdate))}function N(e,t){return P(e).removeEventListener(\"resize\",t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener(\"scroll\",t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function H(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=N(this.reference,this.state))}function V(e){return\"\"!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function W(e,t){Object.keys(t).forEach(function(n){var i=\"\";-1!==[\"width\",\"height\",\"top\",\"right\",\"bottom\",\"left\"].indexOf(n)&&V(t[n])&&(i=\"px\"),e.style[n]=t[n]+i})}function z(e,t){Object.keys(t).forEach(function(n){!1!==t[n]?e.setAttribute(n,t[n]):e.removeAttribute(n)})}function U(e){return W(e.instance.popper,e.styles),z(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&W(e.arrowElement,e.arrowStyles),e}function K(e,t,n,i,r){var o=F(r,t,e),s=x(n.placement,o,t,e,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return t.setAttribute(\"x-placement\",s),W(t,{position:\"absolute\"}),n}function q(e,t){var n=t.x,i=t.y,r=e.offsets.popper,o=_(e.instance.modifiers,function(e){return\"applyStyle\"===e.name}).gpuAcceleration;void 0!==o&&console.warn(\"WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!\");var s=void 0!==o?o:t.gpuAcceleration,a=l(e.instance.popper),c=y(a),u={position:r.position},h={left:Math.floor(r.left),top:Math.floor(r.top),bottom:Math.floor(r.bottom),right:Math.floor(r.right)},d=\"bottom\"===n?\"top\":\"bottom\",f=\"right\"===i?\"left\":\"right\",p=O(\"transform\"),m=void 0,g=void 0;if(g=\"bottom\"===d?-c.height+h.bottom:h.top,m=\"right\"===f?-c.width+h.right:h.left,s&&p)u[p]=\"translate3d(\"+m+\"px, \"+g+\"px, 0)\",u[d]=0,u[f]=0,u.willChange=\"transform\";else{var v=\"bottom\"===d?-1:1,b=\"right\"===f?-1:1;u[d]=g*v,u[f]=m*b,u.willChange=d+\", \"+f}var w={\"x-placement\":e.placement};return e.attributes=ye({},w,e.attributes),e.styles=ye({},u,e.styles),e.arrowStyles=ye({},e.offsets.arrow,e.arrowStyles),e}function G(e,t,n){var i=_(e,function(e){return e.name===t}),r=!!i&&e.some(function(e){return e.name===n&&e.enabled&&e.order<i.order});if(!r){var o=\"`\"+t+\"`\",s=\"`\"+n+\"`\";console.warn(s+\" modifier is required by \"+o+\" modifier in order to work, be sure to include it before \"+o+\"!\")}return r}function J(e,t){var n;if(!G(e.instance.modifiers,\"arrow\",\"keepTogether\"))return e;var i=t.element;if(\"string\"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return console.warn(\"WARNING: `arrow.element` must be child of its popper element!\"),e;var r=e.placement.split(\"-\")[0],s=e.offsets,a=s.popper,l=s.reference,c=-1!==[\"left\",\"right\"].indexOf(r),u=c?\"height\":\"width\",h=c?\"Top\":\"Left\",d=h.toLowerCase(),f=c?\"left\":\"top\",p=c?\"bottom\":\"right\",m=S(i)[u];l[p]-m<a[d]&&(e.offsets.popper[d]-=a[d]-(l[p]-m)),l[d]+m>a[p]&&(e.offsets.popper[d]+=l[d]+m-a[p]),e.offsets.popper=v(e.offsets.popper);var g=l[d]+l[u]/2-m/2,y=o(e.instance.popper),b=parseFloat(y[\"margin\"+h],10),w=parseFloat(y[\"border\"+h+\"Width\"],10),C=g-e.offsets.popper[d]-b-w;return C=Math.max(Math.min(a[u]-m,C),0),e.arrowElement=i,e.offsets.arrow=(n={},ve(n,d,Math.round(C)),ve(n,f,\"\"),n),e}function Q(e){return\"end\"===e?\"start\":\"start\"===e?\"end\":e}function Y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=we.indexOf(e),i=we.slice(n+1).concat(we.slice(0,n));return t?i.reverse():i}function X(e,t){if(L(e.instance.modifiers,\"inner\"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=A(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split(\"-\")[0],r=$(i),o=e.placement.split(\"-\")[1]||\"\",s=[];switch(t.behavior){case Ce.FLIP:s=[i,r];break;case Ce.CLOCKWISE:s=Y(i);break;case Ce.COUNTERCLOCKWISE:s=Y(i,!0);break;default:s=t.behavior}return s.forEach(function(a,l){if(i!==a||s.length===l+1)return e;i=e.placement.split(\"-\")[0],r=$(i);var c=e.offsets.popper,u=e.offsets.reference,h=Math.floor,d=\"left\"===i&&h(c.right)>h(u.left)||\"right\"===i&&h(c.left)<h(u.right)||\"top\"===i&&h(c.bottom)>h(u.top)||\"bottom\"===i&&h(c.top)<h(u.bottom),f=h(c.left)<h(n.left),p=h(c.right)>h(n.right),m=h(c.top)<h(n.top),g=h(c.bottom)>h(n.bottom),v=\"left\"===i&&f||\"right\"===i&&p||\"top\"===i&&m||\"bottom\"===i&&g,y=-1!==[\"top\",\"bottom\"].indexOf(i),b=!!t.flipVariations&&(y&&\"start\"===o&&f||y&&\"end\"===o&&p||!y&&\"start\"===o&&m||!y&&\"end\"===o&&g);(d||v||b)&&(e.flipped=!0,(d||v)&&(i=s[l+1]),b&&(o=Q(o)),e.placement=i+(o?\"-\"+o:\"\"),e.offsets.popper=ye({},e.offsets.popper,k(e.instance.popper,e.offsets.reference,e.placement)),e=D(e.instance.modifiers,e,\"flip\"))}),e}function Z(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split(\"-\")[0],o=Math.floor,s=-1!==[\"top\",\"bottom\"].indexOf(r),a=s?\"right\":\"bottom\",l=s?\"left\":\"top\",c=s?\"width\":\"height\";return n[a]<o(i[l])&&(e.offsets.popper[l]=o(i[l])-n[c]),n[l]>o(i[a])&&(e.offsets.popper[l]=o(i[a])),e}function ee(e,t,n,i){var r=e.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/),o=+r[1],s=r[2];if(!o)return e;if(0===s.indexOf(\"%\")){var a=void 0;switch(s){case\"%p\":a=n;break;case\"%\":case\"%r\":default:a=i}return v(a)[t]/100*o}if(\"vh\"===s||\"vw\"===s){return(\"vh\"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}function te(e,t,n,i){var r=[0,0],o=-1!==[\"right\",\"left\"].indexOf(i),s=e.split(/(\\+|\\-)/).map(function(e){return e.trim()}),a=s.indexOf(_(s,function(e){return-1!==e.search(/,|\\s/)}));s[a]&&-1===s[a].indexOf(\",\")&&console.warn(\"Offsets separated by white space(s) are deprecated, use a comma (,) instead.\");var l=/\\s*,\\s*|\\s+/,c=-1!==a?[s.slice(0,a).concat([s[a].split(l)[0]]),[s[a].split(l)[1]].concat(s.slice(a+1))]:[s];return c=c.map(function(e,i){var r=(1===i?!o:o)?\"height\":\"width\",s=!1;return e.reduce(function(e,t){return\"\"===e[e.length-1]&&-1!==[\"+\",\"-\"].indexOf(t)?(e[e.length-1]=t,s=!0,e):s?(e[e.length-1]+=t,s=!1,e):e.concat(t)},[]).map(function(e){return ee(e,r,t,n)})}),c.forEach(function(e,t){e.forEach(function(n,i){V(n)&&(r[t]+=n*(\"-\"===e[i-1]?-1:1))})}),r}function ne(e,t){var n=t.offset,i=e.placement,r=e.offsets,o=r.popper,s=r.reference,a=i.split(\"-\")[0],l=void 0;return l=V(+n)?[+n,0]:te(n,o,s,a),\"left\"===a?(o.top+=l[0],o.left-=l[1]):\"right\"===a?(o.top+=l[0],o.left+=l[1]):\"top\"===a?(o.left+=l[0],o.top-=l[1]):\"bottom\"===a&&(o.left+=l[0],o.top+=l[1]),e.popper=o,e}function ie(e,t){var n=t.boundariesElement||l(e.instance.popper);e.instance.reference===n&&(n=l(n));var i=A(e.instance.popper,e.instance.reference,t.padding,n);t.boundaries=i;var r=t.priority,o=e.offsets.popper,s={primary:function(e){var n=o[e];return o[e]<i[e]&&!t.escapeWithReference&&(n=Math.max(o[e],i[e])),ve({},e,n)},secondary:function(e){var n=\"right\"===e?\"left\":\"top\",r=o[n];return o[e]>i[e]&&!t.escapeWithReference&&(r=Math.min(o[n],i[e]-(\"right\"===e?o.width:o.height))),ve({},n,r)}};return r.forEach(function(e){var t=-1!==[\"left\",\"top\"].indexOf(e)?\"primary\":\"secondary\";o=ye({},o,s[t](e))}),e.offsets.popper=o,e}function re(e){var t=e.placement,n=t.split(\"-\")[0],i=t.split(\"-\")[1];if(i){var r=e.offsets,o=r.reference,s=r.popper,a=-1!==[\"bottom\",\"top\"].indexOf(n),l=a?\"left\":\"top\",c=a?\"width\":\"height\",u={start:ve({},l,o[l]),end:ve({},l,o[l]+o[c]-s[c])};e.offsets.popper=ye({},s,u[i])}return e}function oe(e){if(!G(e.instance.modifiers,\"hide\",\"preventOverflow\"))return e;var t=e.offsets.reference,n=_(e.instance.modifiers,function(e){return\"preventOverflow\"===e.name}).boundaries;if(t.bottom<n.top||t.left>n.right||t.top>n.bottom||t.right<n.left){if(!0===e.hide)return e;e.hide=!0,e.attributes[\"x-out-of-boundaries\"]=\"\"}else{if(!1===e.hide)return e;e.hide=!1,e.attributes[\"x-out-of-boundaries\"]=!1}return e}function se(e){var t=e.placement,n=t.split(\"-\")[0],i=e.offsets,r=i.popper,o=i.reference,s=-1!==[\"left\",\"right\"].indexOf(n),a=-1===[\"top\",\"left\"].indexOf(n);return r[s?\"left\":\"top\"]=o[n]-(a?r[s?\"width\":\"height\"]:0),e.placement=$(t),e.offsets.popper=v(r),e}for(var ae=\"undefined\"!=typeof window&&\"undefined\"!=typeof document,le=[\"Edge\",\"Trident\",\"Firefox\"],ce=0,ue=0;ue<le.length;ue+=1)if(ae&&navigator.userAgent.indexOf(le[ue])>=0){ce=1;break}var he=ae&&window.Promise,de=he?n:i,fe=void 0,pe=function(){return void 0===fe&&(fe=-1!==navigator.appVersion.indexOf(\"MSIE 10\")),fe},me=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")},ge=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),ve=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},ye=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},be=[\"auto-start\",\"auto\",\"auto-end\",\"top-start\",\"top\",\"top-end\",\"right-start\",\"right\",\"right-end\",\"bottom-end\",\"bottom\",\"bottom-start\",\"left-end\",\"left\",\"left-start\"],we=be.slice(3),Ce={FLIP:\"flip\",CLOCKWISE:\"clockwise\",COUNTERCLOCKWISE:\"counterclockwise\"},Ae={shift:{order:100,enabled:!0,fn:re},offset:{order:200,enabled:!0,fn:ne,offset:0},preventOverflow:{order:300,enabled:!0,fn:ie,priority:[\"left\",\"right\",\"top\",\"bottom\"],padding:5,boundariesElement:\"scrollParent\"},keepTogether:{order:400,enabled:!0,fn:Z},arrow:{order:500,enabled:!0,fn:J,element:\"[x-arrow]\"},flip:{order:600,enabled:!0,fn:X,behavior:\"flip\",padding:5,boundariesElement:\"viewport\"},inner:{order:700,enabled:!1,fn:se},hide:{order:800,enabled:!0,fn:oe},computeStyle:{order:850,enabled:!0,fn:q,gpuAcceleration:!0,x:\"bottom\",y:\"right\"},applyStyle:{order:900,enabled:!0,fn:U,onLoad:K,gpuAcceleration:void 0}},Ee={placement:\"bottom\",eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:Ae},xe=function(){function e(t,n){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};me(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=de(this.update.bind(this)),this.options=ye({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(ye({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=ye({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return ye({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&r(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var s=this.options.eventsEnabled;s&&this.enableEventListeners(),this.state.eventsEnabled=s}return ge(e,[{key:\"update\",value:function(){return T.call(this)}},{key:\"destroy\",value:function(){return R.call(this)}},{key:\"enableEventListeners\",value:function(){return j.call(this)}},{key:\"disableEventListeners\",value:function(){return H.call(this)}}]),e}();xe.Utils=(\"undefined\"!=typeof window?window:e).PopperUtils,xe.placements=be,xe.Defaults=Ee,t.a=xe}).call(t,n(\"DuR2\"))},ZhCs:function(e,t,n){\"use strict\";var i=n(\"X1Qo\"),r=n(\"q21c\"),o={bButtonGroup:i.a,bBtnGroup:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},a44S:function(e,t,n){\"use strict\";function i(e){var t=n.i(r.f)(null);return function(){var n=JSON.stringify(arguments);return t[n]=t[n]||e.apply(null,arguments)}}t.a=i;var r=n(\"/CDJ\")},aQMJ:function(e,t,n){\"use strict\";var i=n(\"OmfC\"),r=n(\"AM9w\").toHash;e.exports=function(){var e=[{type:\"number\",rules:[{maximum:[\"exclusiveMaximum\"]},{minimum:[\"exclusiveMinimum\"]},\"multipleOf\",\"format\"]},{type:\"string\",rules:[\"maxLength\",\"minLength\",\"pattern\",\"format\"]},{type:\"array\",rules:[\"maxItems\",\"minItems\",\"uniqueItems\",\"contains\",\"items\"]},{type:\"object\",rules:[\"maxProperties\",\"minProperties\",\"required\",\"dependencies\",\"propertyNames\",{properties:[\"additionalProperties\",\"patternProperties\"]}]},{rules:[\"$ref\",\"const\",\"enum\",\"not\",\"anyOf\",\"oneOf\",\"allOf\"]}],t=[\"type\"],n=[\"additionalItems\",\"$schema\",\"$id\",\"id\",\"title\",\"description\",\"default\",\"definitions\"],o=[\"number\",\"integer\",\"string\",\"array\",\"object\",\"boolean\",\"null\"];return e.all=r(t),e.types=r(o),e.forEach(function(n){n.rules=n.rules.map(function(n){var r;if(\"object\"==typeof n){var o=Object.keys(n)[0];r=n[o],n=o,r.forEach(function(n){t.push(n),e.all[n]=!0})}return t.push(n),e.all[n]={keyword:n,code:i[n],implements:r}}),n.type&&(e.types[n.type]=n)}),e.keywords=r(t.concat(n)),e.custom={},e}},ab1q:function(e,t,n){\"use strict\";function i(e,t){return n.i(r.a)(t.replace(e,\"\"))}t.a=i;var r=n(\"ld9E\")},awSw:function(e,t,n){\"use strict\";var i=n(\"/sUu\"),r=n(\"2I3h\"),o=n(\"Z09Z\"),s=n(\"X/jh\"),a=n(\"WF/B\"),l=n(\"7XLD\"),c=n(\"q21c\"),u={bCard:i.a,bCardHeader:r.a,bCardBody:o.a,bCardFooter:s.a,bCardImg:a.a,bCardGroup:l.a},h={install:function(e){n.i(c.c)(e,u)}};n.i(c.a)(h),t.a=h},ax3d:function(e,t,n){var i=n(\"e8AB\")(\"keys\"),r=n(\"3Eo+\");e.exports=function(e){return i[e]||(i[e]=r(e))}},c0yX:function(e,t,n){\"use strict\";function i(e){this.message=\"validation failed\",this.errors=e,this.ajv=this.validation=!0}function r(e,t,n){this.message=n||r.message(e,t),this.missingRef=s.url(e,t),this.missingSchema=s.normalizeId(s.fullPath(this.missingRef))}function o(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var s=n(\"91JP\");e.exports={Validation:o(i),MissingRef:o(r)},r.message=function(e,t){return\"can't resolve reference \"+t+\" from id \"+e}},cOEn:function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(\"FEtK\"),r=n(\"1etr\"),o=n(\"JD2z\"),s=n(\"NpfB\"),a=n(\"ZhCs\"),l=n(\"3oid\"),c=n(\"ob1s\"),u=n(\"awSw\"),h=n(\"ylhW\"),d=n(\"33mL\"),f=n(\"yTKe\"),p=n(\"y47G\"),m=n(\"gY5a\"),g=n(\"eEUf\"),v=n(\"hi16\"),y=n(\"mpc6\"),b=n(\"Ze8Z\"),w=n(\"o6bs\"),C=n(\"xUiR\"),A=n(\"dOJo\"),E=n(\"yKl8\"),x=n(\"56ph\"),F=n(\"0Gqu\"),S=n(\"JWHX\"),$=n(\"S+R4\"),k=n(\"JuiE\"),_=n(\"mxOy\"),B=n(\"qIPk\"),D=n(\"Ymj4\"),T=n(\"gEcC\"),L=n(\"iNir\"),O=n(\"pDyP\"),R=n(\"dPTs\"),P=n(\"DOWb\"),M=n(\"T0hN\"),I=n(\"q2kL\");n.d(t,\"Alert\",function(){return i.a}),n.d(t,\"Badge\",function(){return r.a}),n.d(t,\"Breadcrumb\",function(){return o.a}),n.d(t,\"Button\",function(){return s.a}),n.d(t,\"ButtonToolbar\",function(){return l.a}),n.d(t,\"ButtonGroup\",function(){return a.a}),n.d(t,\"Card\",function(){return u.a}),n.d(t,\"Carousel\",function(){return h.a}),n.d(t,\"Collapse\",function(){return f.a}),n.d(t,\"Dropdown\",function(){return p.a}),n.d(t,\"Embed\",function(){return m.a}),n.d(t,\"Form\",function(){return g.a}),n.d(t,\"FormGroup\",function(){return v.a}),n.d(t,\"FormInput\",function(){return w.a}),n.d(t,\"FormTextarea\",function(){return C.a}),n.d(t,\"FormFile\",function(){return A.a}),n.d(t,\"FormCheckbox\",function(){return y.a}),n.d(t,\"FormRadio\",function(){return b.a}),n.d(t,\"FormSelect\",function(){return E.a}),n.d(t,\"Image\",function(){return x.a}),n.d(t,\"InputGroup\",function(){return c.a}),n.d(t,\"Jumbotron\",function(){return F.a}),n.d(t,\"Layout\",function(){return d.a}),n.d(t,\"Link\",function(){return S.a}),n.d(t,\"ListGroup\",function(){return $.a}),n.d(t,\"Media\",function(){return k.a}),n.d(t,\"Modal\",function(){return _.a}),n.d(t,\"Nav\",function(){return B.a}),n.d(t,\"Navbar\",function(){return D.a}),n.d(t,\"Pagination\",function(){return T.a}),n.d(t,\"PaginationNav\",function(){return L.a}),n.d(t,\"Popover\",function(){return O.a}),n.d(t,\"Progress\",function(){return R.a}),n.d(t,\"Table\",function(){return P.a}),n.d(t,\"Tabs\",function(){return M.a}),n.d(t,\"Tooltip\",function(){return I.a})},cgSB:function(e,t,n){\"use strict\";var i=n(\"KpFv\");t.a={components:{bProgressBar:i.a},render:function(e){var t=this,n=t.$slots.default;return n||(n=e(\"b-progress-bar\",{props:{value:t.value,max:t.max,precision:t.precision,variant:t.variant,animated:t.animated,striped:t.striped,showProgress:t.showProgress,showValue:t.showValue}})),e(\"div\",{class:[\"progress\"],style:t.progressHeight},[n])},props:{variant:{type:String,default:null},striped:{type:Boolean,default:!1},animated:{type:Boolean,default:!1},height:{type:String,default:null},precision:{type:Number,default:0},showProgress:{type:Boolean,default:!1},showValue:{type:Boolean,default:!1},max:{type:Number,default:100},value:{type:Number,default:0}},computed:{progressHeight:function(){return{height:this.height||null}}}}},ckuA:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={tag:{type:String,default:\"span\"}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.children;return e(r.tag,n.i(i.a)(o,{staticClass:\"navbar-text\"}),s)}}},czjy:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={id:{type:String,default:null},inline:{type:Boolean,default:!1},novalidate:{type:Boolean,default:!1},validated:{type:Boolean,default:!1}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.children;return e(\"form\",n.i(i.a)(o,{class:{\"form-inline\":r.inline,\"was-validated\":r.validated},attrs:{id:r.id,novalidate:r.novalidate}}),s)}}},dOJo:function(e,t,n){\"use strict\";var i=n(\"VhEN\"),r=n(\"q21c\"),o={bFormFile:i.a,bFile:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},dPTs:function(e,t,n){\"use strict\";var i=n(\"cgSB\"),r=n(\"KpFv\"),o=n(\"q21c\"),s={bProgress:i.a,bProgressBar:r.a},a={install:function(e){n.i(o.c)(e,s)}};n.i(o.a)(a),t.a=a},ddAL:function(e,t,n){\"use strict\";function i(e){return(e||[]).filter(h.f)}var r=n(\"Zgw8\"),o=n(\"KSF9\"),s=n(\"34sA\"),a=n(\"GnGf\"),l=n(\"/CDJ\"),c=n(\"tgmf\"),u=n(\"7C8l\"),h=n(\"Kz7p\"),d={TOP:\"top-start\",TOPEND:\"top-end\",BOTTOM:\"bottom-start\",BOTTOMEND:\"bottom-end\"};t.a={mixins:[o.a,s.a],props:{disabled:{type:Boolean,default:!1},text:{type:String,default:\"\"},dropup:{type:Boolean,default:!1},right:{type:Boolean,default:!1},offset:{type:[Number,String],default:0},noFlip:{type:Boolean,default:!1},popperOpts:{type:Object,default:function(){}}},data:function(){return{visible:!1,inNavbar:null}},created:function(){this._popper=null},mounted:function(){this.listenOnRoot(\"bv::dropdown::shown\",this.rootCloseListener),this.listenOnRoot(\"clicked::link\",this.rootCloseListener),this.listenOnRoot(\"bv::link::clicked\",this.rootCloseListener)},deactivated:function(){this.visible=!1,this.setTouchStart(!1),this.removePopper()},beforeDestroy:function(){this.visible=!1,this.setTouchStart(!1),this.removePopper()},watch:{visible:function(e,t){e!==t&&(e?this.showMenu():this.hideMenu())},disabled:function(e,t){e!==t&&e&&this.visible&&(this.visible=!1)}},computed:{toggler:function(){return this.$refs.toggle.$el||this.$refs.toggle}},methods:{showMenu:function(){if(!this.disabled){if(this.$emit(\"show\"),this.emitOnRoot(\"bv::dropdown::shown\",this),null===this.inNavbar&&this.isNav&&(this.inNavbar=Boolean(n.i(h.j)(\".navbar\",this.$el))),!this.inNavbar)if(void 0===r.a)n.i(u.a)(\"b-dropdown: Popper.js not found. Falling back to CSS positioning.\");else{var e=this.dropup&&this.right||this.split?this.$el:this.$refs.toggle;e=e.$el||e,this.createPopper(e)}this.setTouchStart(!0),this.$emit(\"shown\"),this.$nextTick(this.focusFirstItem)}},hideMenu:function(){this.$emit(\"hide\"),this.setTouchStart(!1),this.emitOnRoot(\"bv::dropdown::hidden\",this),this.$emit(\"hidden\"),this.removePopper()},createPopper:function(e){this.removePopper(),this._popper=new r.a(e,this.$refs.menu,this.getPopperConfig())},removePopper:function(){this._popper&&this._popper.destroy(),this._popper=null},getPopperConfig:function(){var e=d.BOTTOM;this.dropup&&this.right?e=d.TOPEND:this.dropup?e=d.TOP:this.right&&(e=d.BOTTOMEND);var t={placement:e,modifiers:{offset:{offset:this.offset||0},flip:{enabled:!this.noFlip}}};return this.boundary&&(t.modifiers.preventOverflow={boundariesElement:this.boundary}),n.i(l.a)(t,this.popperOpts||{})},setTouchStart:function(e){var t=this;if(\"ontouchstart\"in document.documentElement){n.i(a.a)(document.body.children).forEach(function(i){e?n.i(h.h)(\"mouseover\",t._noop):n.i(h.i)(\"mouseover\",t._noop)})}},_noop:function(){},rootCloseListener:function(e){e!==this&&(this.visible=!1)},clickOutListener:function(){this.visible=!1},show:function(){this.disabled||(this.visible=!0)},hide:function(){this.disabled||(this.visible=!1)},toggle:function(e){e=e||{};var t=e.type,n=e.keyCode;if(\"click\"===t||\"keydown\"===t&&(n===c.a.ENTER||n===c.a.SPACE||n===c.a.DOWN)){if(e.preventDefault(),e.stopPropagation(),this.disabled)return void(this.visible=!1);this.visible=!this.visible}},click:function(e){if(this.disabled)return void(this.visible=!1);this.$emit(\"click\",e)},onKeydown:function(e){var t=e.keyCode;t===c.a.ESC?this.onEsc(e):t===c.a.TAB?this.onTab(e):t===c.a.DOWN?this.focusNext(e,!1):t===c.a.UP&&this.focusNext(e,!0)},onEsc:function(e){this.visible&&(this.visible=!1,e.preventDefault(),e.stopPropagation(),this.$nextTick(this.focusToggler))},onTab:function(e){this.visible&&(this.visible=!1)},onFocusOut:function(e){this.$refs.menu.contains(e.relatedTarget)||(this.visible=!1)},onMouseOver:function(e){var t=e.target;t.classList.contains(\"dropdown-item\")&&!t.disabled&&!t.classList.contains(\"disabled\")&&t.focus&&t.focus()},focusNext:function(e,t){var n=this;this.visible&&(e.preventDefault(),e.stopPropagation(),this.$nextTick(function(){var i=n.getItems();if(!(i.length<1)){var r=i.indexOf(e.target);t&&r>0?r--:!t&&r<i.length-1&&r++,r<0&&(r=0),n.focusItem(r,i)}}))},focusItem:function(e,t){var i=t.find(function(t,n){return n===e});i&&\"-1\"!==n.i(h.d)(i,\"tabindex\")&&i.focus()},getItems:function(){return i(n.i(h.q)(\".dropdown-item:not(.disabled):not([disabled])\",this.$refs.menu))},getFirstItem:function(){return this.getItems()[0]||null},focusFirstItem:function(){var e=this.getFirstItem();e&&this.focusItem(0,[e])},focusToggler:function(){var e=this.toggler;e&&e.focus&&e.focus()}}}},dfnb:function(e,t,n){\"use strict\";t.a={computed:{custom:function(){return!this.plain}},props:{plain:{type:Boolean,default:!1}}}},dsqM:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.schema[t],o=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+\"/\"+t,a=!e.opts.allErrors,l=e.util.copy(e),c=\"\";l.level++;var u=\"valid\"+l.level,h=l.baseId,d=!0,f=r;if(f)for(var p,m=-1,g=f.length-1;m<g;)p=f[m+=1],e.util.schemaHasRules(p,e.RULES.all)&&(d=!1,l.schema=p,l.schemaPath=o+\"[\"+m+\"]\",l.errSchemaPath=s+\"/\"+m,i+=\"  \"+e.validate(l)+\" \",l.baseId=h,a&&(i+=\" if (\"+u+\") { \",c+=\"}\"));return a&&(i+=d?\" if (true) { \":\" \"+c.slice(0,-1)+\" \"),i=e.util.cleanUpCode(i)}},e6fC:function(e,t,n){\"use strict\";var i=n(\"cOEn\"),r=n(\"WVvG\"),o=n(\"q21c\"),s={install:function(e){if(!e._bootstrap_vue_installed){e._bootstrap_vue_installed=!0;for(var t in i)e.use(i[t]);for(var n in r)e.use(r[n])}}};n.i(o.a)(s),t.a=s},e8AB:function(e,t,n){var i=n(\"7KvD\"),r=i[\"__core-js_shared__\"]||(i[\"__core-js_shared__\"]={});e.exports=function(e){return r[e]||(r[e]={})}},\"eD/a\":function(e,t,n){\"use strict\";e.exports=function(e){for(var t,n=0,i=e.length,r=0;r<i;)n++,(t=e.charCodeAt(r++))>=55296&&t<=56319&&r<i&&56320==(64512&(t=e.charCodeAt(r)))&&r++;return n}},eEUf:function(e,t,n){\"use strict\";var i=n(\"czjy\"),r=n(\"I7Xz\"),o=n(\"tDPY\"),s=n(\"q32r\"),a=n(\"x7Qz\"),l=n(\"q21c\"),c={bForm:i.a,bFormRow:r.a,bFormText:o.a,bFormInvalidFeedback:s.a,bFormFeedback:s.a,bFormValidFeedback:a.a},u={install:function(e){n.i(l.c)(e,c)}};n.i(l.a)(u),t.a=u},eTOm:function(e,t){e.exports=function e(t,n){\"use strict\";var i,r,o=/(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,s=/(^[ ]*|[ ]*$)/g,a=/(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,l=/^0x[0-9a-f]+$/i,c=/^0/,u=function(t){return e.insensitive&&(\"\"+t).toLowerCase()||\"\"+t},h=u(t).replace(s,\"\")||\"\",d=u(n).replace(s,\"\")||\"\",f=h.replace(o,\"\\0$1\\0\").replace(/\\0$/,\"\").replace(/^\\0/,\"\").split(\"\\0\"),p=d.replace(o,\"\\0$1\\0\").replace(/\\0$/,\"\").replace(/^\\0/,\"\").split(\"\\0\"),m=parseInt(h.match(l),16)||1!==f.length&&h.match(a)&&Date.parse(h),g=parseInt(d.match(l),16)||m&&d.match(a)&&Date.parse(d)||null;if(g){if(m<g)return-1;if(m>g)return 1}for(var v=0,y=Math.max(f.length,p.length);v<y;v++){if(i=!(f[v]||\"\").match(c)&&parseFloat(f[v])||f[v]||0,r=!(p[v]||\"\").match(c)&&parseFloat(p[v])||p[v]||0,isNaN(i)!==isNaN(r))return isNaN(i)?1:-1;if(typeof i!=typeof r&&(i+=\"\",r+=\"\"),i<r)return-1;if(i>r)return 1}return 0}},etPs:function(e,t,n){\"use strict\";function i(){return{href:{type:String,default:null},rel:{type:String,default:null},target:{type:String,default:\"_self\"},active:{type:Boolean,default:!1},activeClass:{type:String,default:\"active\"},append:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},event:{type:[String,Array],default:\"click\"},exact:{type:Boolean,default:!1},exactActiveClass:{type:String,default:\"active\"},replace:{type:Boolean,default:!1},routerTag:{type:String,default:\"a\"},to:{type:[String,Object],default:null}}}function r(e){var t=i();return e=n.i(u.c)(e),n.i(c.b)(t).reduce(function(i,r){return n.i(u.d)(e,r)&&(i[r]=t[r]),i},{})}function o(e,t){return Boolean(t.$router)&&e.to&&!e.disabled?\"router-link\":\"a\"}function s(e,t){var n=(e.disabled,e.href),i=e.to;if(\"router-link\"!==t){if(n)return n;if(i){if(\"string\"==typeof i)return i;if(\"object\"===(void 0===i?\"undefined\":d(i))&&\"string\"==typeof i.path)return i.path}return\"#\"}}function a(e){var t=e.target,n=e.rel;return\"_blank\"===t&&null===n?\"noopener\":n||null}function l(e){var t=e.disabled,n=e.tag,i=e.href,r=e.suppliedHandler,o=e.parent,s=\"router-link\"===n;return function(e){t&&e instanceof Event?(e.stopPropagation(),e.stopImmediatePropagation()):(o.$root.$emit(\"clicked::link\",e),s&&e.target.__vue__&&e.target.__vue__.$emit(\"click\",e),\"function\"==typeof r&&r.apply(void 0,arguments)),(!s&&\"#\"===i||t)&&e.preventDefault()}}t.c=i,t.a=r;var c=n(\"/CDJ\"),u=n(\"GnGf\"),h=n(\"2PZM\"),d=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};i();t.b={functional:!0,props:i(),render:function(e,t){var i=t.props,r=t.data,u=t.parent,d=t.children,f=o(i,u),p=a(i),m=s(i,f),g=\"router-link\"===f?\"nativeOn\":\"on\",v=(r[g]||{}).click,y={click:l({tag:f,href:m,disabled:i.disabled,suppliedHandler:v,parent:u})},b=n.i(h.a)(r,{class:[i.active?i.exact?i.exactActiveClass:i.activeClass:null,{disabled:i.disabled}],attrs:{rel:p,href:m,target:i.target,tabindex:i.disabled?\"-1\":r.attrs?r.attrs.tabindex:null,\"aria-disabled\":\"a\"===f&&i.disabled?\"true\":null},props:n.i(c.a)(i,{tag:i.routerTag})});return b.attrs.href||delete b.attrs.href,b[g]=n.i(c.a)(b[g]||{},y),e(f,b,d)}}},evD5:function(e,t,n){var i=n(\"77Pl\"),r=n(\"SfB7\"),o=n(\"MmMw\"),s=Object.defineProperty;t.f=n(\"+E39\")?Object.defineProperty:function(e,t,n){if(i(e),t=o(t,!0),i(n),r)try{return s(e,t,n)}catch(e){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(e[t]=n.value),e}},f9FU:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"2PZM\"),o={tag:{type:String,default:\"nav\"},type:{type:String,default:\"light\"},variant:{type:String},toggleable:{type:[Boolean,String],default:!1},toggleBreakpoint:{type:String,default:null},fixed:{type:String},sticky:{type:Boolean,default:!1}};t.a={functional:!0,props:o,render:function(e,t){var o,s=t.props,a=t.data,l=t.children,c=s.toggleBreakpoint||(!0===s.toggleable?\"sm\":s.toggleable)||\"sm\";return e(s.tag,n.i(r.a)(a,{staticClass:\"navbar\",class:(o={},i(o,\"navbar-\"+s.type,Boolean(s.type)),i(o,\"bg-\"+s.variant,Boolean(s.variant)),i(o,\"fixed-\"+s.fixed,Boolean(s.fixed)),i(o,\"sticky-top\",s.sticky),i(o,\"navbar-expand-\"+c,!1!==s.toggleable),o)}),l)}}},fGLG:function(e,t,n){!function(t,n){e.exports=n()}(0,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p=\"/dist/\",t(0)}([function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(17),r=function(e){return e&&e.__esModule?e:{default:e}}(i);n(41),r.default.install=function(e,t){var n=e.extend({template:'<vue-toastr ref=\"vueToastr\"></vue-toastr>',components:{\"vue-toastr\":r.default}}),i=(new n).$mount();document.body.appendChild(i.$el),e.prototype.$toastr=i.$refs.vueToastr},\"undefined\"!=typeof window&&window.Vue&&window.Vue.use(r.default),t.default=r.default,e.exports=t.default},function(e,t){var n=Object;e.exports={create:n.create,getProto:n.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:n.getOwnPropertyDescriptor,setDesc:n.defineProperty,setDescs:n.defineProperties,getKeys:n.keys,getNames:n.getOwnPropertyNames,getSymbols:n.getOwnPropertySymbols,each:[].forEach}},function(e,t){var n=e.exports={version:\"1.2.6\"};\"number\"==typeof __e&&(__e=n)},function(e,t){var n=e.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var i=n(29),r=n(7);e.exports=function(e){return i(r(e))}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError(\"Can't call method on  \"+e);return e}},function(e,t,n){e.exports=!n(4)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(e,t,n){var i=n(3),r=n(2),o=n(25),s=\"prototype\",a=function(e,t,n){var l,c,u,h=e&a.F,d=e&a.G,f=e&a.S,p=e&a.P,m=e&a.B,g=e&a.W,v=d?r:r[t]||(r[t]={}),y=d?i:f?i[t]:(i[t]||{})[s];d&&(n=t);for(l in n)(c=!h&&y&&l in y)&&l in v||(u=c?y[l]:n[l],v[l]=d&&\"function\"!=typeof y[l]?n[l]:m&&c?o(u,i):g&&y[l]==u?function(e){var t=function(t){return this instanceof e?new e(t):e(t)};return t[s]=e[s],t}(u):p&&\"function\"==typeof u?o(Function.call,u):u,p&&((v[s]||(v[s]={}))[l]=u))};a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,e.exports=a},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var i=n(3),r=\"__core-js_shared__\",o=i[r]||(i[r]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,t){var n=0,i=Math.random();e.exports=function(e){return\"Symbol(\".concat(void 0===e?\"\":e,\")_\",(++n+i).toString(36))}},function(e,t,n){var i=n(12)(\"wks\"),r=n(13),o=n(3).Symbol;e.exports=function(e){return i[e]||(i[e]=o&&o[e]||(o||r)(\"Symbol.\"+e))}},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={template:'<div class=\"toast-progress\" v-bind:style=\"style\"></div>',props:[\"data\"],data:function(){return{intervalId:!1,hideEta:!1,progressBarValue:this.data.progressBarValue,style:{width:\"100%\"}}},mounted:function(){null===this.progressBarValue?(this.hideEta=(new Date).getTime()+this.data.timeout,this.setTimer()):this.updateProgress()},destroyed:function(){clearInterval(this.intervalId)},methods:{setTimer:function(){var e=this;this.intervalId=setInterval(function(){e.updateProgress()},10)},setValue:function(e){this.progressBarValue=e,this.updateProgress()},updateProgress:function(){var e;if(null===this.progressBarValue){e=(this.hideEta-(new Date).getTime())/this.data.timeout*100,e=Math.floor(e),this.style.width=e+\"%\"}else e=Math.floor(this.progressBarValue),this.style.width=e+\"%\"}}},e.exports=t.default},function(e,t,n){\"use strict\";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(42),o=i(r),s=n(15),a=i(s);t.default={components:{toastProgress:a.default},template:o.default,props:[\"data\"],data:function(){return{progressbar:!1,intervalId:!1}},mounted:function(){},created:function(){void 0!==this.data.timeout&&0!==this.data.timeout?(!1!==this.data.progressbar&&(this.progressbar=!0),this.setTimeout()):null!==this.data.progressBarValue&&!1!==this.data.progressbar&&(this.progressbar=!0)},watch:{data:{handler:function(e,t){this.setProgressBarValue(e.progressBarValue)},deep:!0}},beforeDestroy:function(){this.clearIntervalID()},methods:{clearIntervalID:function(){!1!==this.intervalId&&clearInterval(this.intervalId),this.intervalId=!1},onMouseOver:function(){void 0!==this.data.onMouseOver&&this.data.onMouseOver(),this.data.closeOnHover||this.clearIntervalID()},onMouseOut:function(){void 0!==this.data.onMouseOut&&this.data.onMouseOut(),this.data.closeOnHover||this.setTimeout()},setTimeout:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(){var e=this;this.intervalId=setTimeout(function(){e.close()},this.data.timeout)}),setProgressBarValue:function(e){null!==this.data.progressBarValue&&this.$refs.progressBar.setValue(e)},clicked:function(){void 0!==this.data.onClicked&&this.data.onClicked(),this.cclose()},cclose:function(){void 0!==this.data.clickClose&&!1===this.data.clickClose||this.close()},close:function(){null!=this.$parent&&this.$parent.Close(this.data)}}},e.exports=t.default},function(e,t,n){\"use strict\";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(18),o=i(r),s=n(20),a=i(s),l=n(43),c=i(l),u=n(16),h=i(u);t.default={template:c.default,name:\"vueToastr\",data:function(){for(var e=[\"toast-top-right\",\"toast-bottom-right\",\"toast-bottom-left\",\"toast-top-left\",\"toast-top-full-width\",\"toast-bottom-full-width\",\"toast-top-center\",\"toast-bottom-center\"],t={},n=0;n<=e.length-1;n++)t[e[n]]={};return{positions:e,defaultPosition:\"toast-top-right\",defaultType:\"success\",defaultCloseOnHover:!0,defaultTimeout:5e3,defaultProgressBar:!0,defaultProgressBarValue:null,defaultPreventDuplicates:!1,list:t,index:0}},created:function(){},mounted:function(){},components:{toast:h.default},methods:{addToast:function(e){this.index++,e.index=this.index,this.$set(this.list[e.position],this.index,e),void 0!==e.onCreated&&this.$nextTick(function(){e.onCreated()})},removeToast:function(e){void 0!==this.list[e.position][e.index]&&(this.$delete(this.list[e.position],e.index),void 0!==e.onClosed&&this.$nextTick(function(){e.onClosed()}))},setProgress:function(e,t){var n=this.list[e.position][e.index];void 0!==n&&this.$set(n,\"progressBarValue\",t)},Add:function(e){return this.AddData(this.processObjectData(e))},AddData:function(e){if(\"object\"!==(void 0===e?\"undefined\":(0,a.default)(e)))return console.log(\"AddData accept only Object\",e),!1;if(e.preventDuplicates)for(var t=(0,o.default)(this.list[e.position]),n=0;n<t.length;n++)if(this.list[e.position][t[n]].title===e.title&&this.list[e.position][t[n]].msg===e.msg)return console.log(\"Prevent Duplicates\",e),!1;return this.addToast(e),e},processObjectData:function(e){return\"object\"===(void 0===e?\"undefined\":(0,a.default)(e))&&void 0!==e.msg?(void 0===e.position&&(e.position=this.defaultPosition),void 0===e.type&&(e.type=this.defaultType),void 0===e.timeout&&(e.timeout=this.defaultTimeout),void 0===e.progressbar&&(e.progressbar=this.defaultProgressBar),void 0===e.progressBarValue&&(e.progressBarValue=this.defaultProgressBarValue),void 0===e.closeOnHover&&(e.closeOnHover=this.defaultCloseOnHover),void 0===e.preventDuplicates&&(e.preventDuplicates=this.defaultPreventDuplicates),e):{msg:e.toString(),position:this.defaultPosition,type:this.defaultType,timeout:this.defaultTimeout,closeOnHover:this.defaultCloseOnHover,progressbar:this.defaultProgressBar,progressBarValue:this.defaultProgressBarValue,preventDuplicates:this.defaultPreventDuplicates}},e:function(e,t){var n=this.processObjectData(e);return n.type=\"error\",void 0!==t&&(n.title=t),this.AddData(n)},s:function(e,t){var n=this.processObjectData(e);return n.type=\"success\",void 0!==t&&(n.title=t),this.AddData(n)},w:function(e,t){var n=this.processObjectData(e);return n.type=\"warning\",void 0!==t&&(n.title=t),this.AddData(n)},i:function(e,t){var n=this.processObjectData(e);return n.type=\"info\",void 0!==t&&(n.title=t),this.AddData(n)},Close:function(e){this.removeToast(e)},removeByType:function(e){for(var t=0;t<this.positions.length;t++)for(var n=(0,o.default)(this.list[this.positions[t]]),i=0;i<n.length;i++)this.list[this.positions[t]][n[i]].type===e&&this.Close(this.list[this.positions[t]][n[i]])},clearAll:function(){for(var e=0;e<this.positions.length;e++)for(var t=(0,o.default)(this.list[this.positions[e]]),n=0;n<t.length;n++)this.Close(this.list[this.positions[e]][t[n]])}}},e.exports=t.default},function(e,t,n){e.exports={default:n(21),__esModule:!0}},function(e,t,n){e.exports={default:n(22),__esModule:!0}},function(e,t,n){\"use strict\";var i=n(19).default;t.default=function(e){return e&&e.constructor===i?\"symbol\":typeof e},t.__esModule=!0},function(e,t,n){n(38),e.exports=n(2).Object.keys},function(e,t,n){n(40),n(39),e.exports=n(2).Symbol},function(e,t){e.exports=function(e){if(\"function\"!=typeof e)throw TypeError(e+\" is not a function!\");return e}},function(e,t,n){var i=n(31);e.exports=function(e){if(!i(e))throw TypeError(e+\" is not an object!\");return e}},function(e,t,n){var i=n(23);e.exports=function(e,t,n){if(i(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){var i=n(1);e.exports=function(e){var t=i.getKeys(e),n=i.getSymbols;if(n)for(var r,o=n(e),s=i.isEnum,a=0;o.length>a;)s.call(e,r=o[a++])&&t.push(r);return t}},function(e,t,n){var i=n(5),r=n(1).getNames,o={}.toString,s=\"object\"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(e){try{return r(e)}catch(e){return s.slice()}};e.exports.get=function(e){return s&&\"[object Window]\"==o.call(e)?a(e):r(i(e))}},function(e,t,n){var i=n(1),r=n(11);e.exports=n(8)?function(e,t,n){return i.setDesc(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var i=n(6);e.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(e){return\"String\"==i(e)?e.split(\"\"):Object(e)}},function(e,t,n){var i=n(6);e.exports=Array.isArray||function(e){return\"Array\"==i(e)}},function(e,t){e.exports=function(e){return\"object\"==typeof e?null!==e:\"function\"==typeof e}},function(e,t,n){var i=n(1),r=n(5);e.exports=function(e,t){for(var n,o=r(e),s=i.getKeys(o),a=s.length,l=0;a>l;)if(o[n=s[l++]]===t)return n}},function(e,t){e.exports=!0},function(e,t,n){var i=n(9),r=n(2),o=n(4);e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],s={};s[e]=t(n),i(i.S+i.F*o(function(){n(1)}),\"Object\",s)}},function(e,t,n){e.exports=n(28)},function(e,t,n){var i=n(1).setDesc,r=n(10),o=n(14)(\"toStringTag\");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&i(e,o,{configurable:!0,value:t})}},function(e,t,n){var i=n(7);e.exports=function(e){return Object(i(e))}},function(e,t,n){var i=n(37);n(34)(\"keys\",function(e){return function(t){return e(i(t))}})},function(e,t){},function(e,t,n){\"use strict\";var i=n(1),r=n(3),o=n(10),s=n(8),a=n(9),l=n(35),c=n(4),u=n(12),h=n(36),d=n(13),f=n(14),p=n(32),m=n(27),g=n(26),v=n(30),y=n(24),b=n(5),w=n(11),C=i.getDesc,A=i.setDesc,E=i.create,x=m.get,F=r.Symbol,S=r.JSON,$=S&&S.stringify,k=!1,_=f(\"_hidden\"),B=i.isEnum,D=u(\"symbol-registry\"),T=u(\"symbols\"),L=\"function\"==typeof F,O=Object.prototype,R=s&&c(function(){return 7!=E(A({},\"a\",{get:function(){return A(this,\"a\",{value:7}).a}})).a})?function(e,t,n){var i=C(O,t);i&&delete O[t],A(e,t,n),i&&e!==O&&A(O,t,i)}:A,P=function(e){var t=T[e]=E(F.prototype);return t._k=e,s&&k&&R(O,e,{configurable:!0,set:function(t){o(this,_)&&o(this[_],e)&&(this[_][e]=!1),R(this,e,w(1,t))}}),t},M=function(e){return\"symbol\"==typeof e},I=function(e,t,n){return n&&o(T,t)?(n.enumerable?(o(e,_)&&e[_][t]&&(e[_][t]=!1),n=E(n,{enumerable:w(0,!1)})):(o(e,_)||A(e,_,w(1,{})),e[_][t]=!0),R(e,t,n)):A(e,t,n)},j=function(e,t){y(e);for(var n,i=g(t=b(t)),r=0,o=i.length;o>r;)I(e,n=i[r++],t[n]);return e},N=function(e,t){return void 0===t?E(e):j(E(e),t)},H=function(e){var t=B.call(this,e);return!(t||!o(this,e)||!o(T,e)||o(this,_)&&this[_][e])||t},V=function(e,t){var n=C(e=b(e),t);return!n||!o(T,t)||o(e,_)&&e[_][t]||(n.enumerable=!0),n},W=function(e){for(var t,n=x(b(e)),i=[],r=0;n.length>r;)o(T,t=n[r++])||t==_||i.push(t);return i},z=function(e){for(var t,n=x(b(e)),i=[],r=0;n.length>r;)o(T,t=n[r++])&&i.push(T[t]);return i},U=function(e){if(void 0!==e&&!M(e)){for(var t,n,i=[e],r=1,o=arguments;o.length>r;)i.push(o[r++]);return t=i[1],\"function\"==typeof t&&(n=t),!n&&v(t)||(t=function(e,t){if(n&&(t=n.call(this,e,t)),!M(t))return t}),i[1]=t,$.apply(S,i)}},K=c(function(){var e=F();return\"[null]\"!=$([e])||\"{}\"!=$({a:e})||\"{}\"!=$(Object(e))});L||(F=function(){if(M(this))throw TypeError(\"Symbol is not a constructor\");return P(d(arguments.length>0?arguments[0]:void 0))},l(F.prototype,\"toString\",function(){return this._k}),M=function(e){return e instanceof F},i.create=N,i.isEnum=H,i.getDesc=V,i.setDesc=I,i.setDescs=j,i.getNames=m.get=W,i.getSymbols=z,s&&!n(33)&&l(O,\"propertyIsEnumerable\",H,!0));var q={for:function(e){return o(D,e+=\"\")?D[e]:D[e]=F(e)},keyFor:function(e){return p(D,e)},useSetter:function(){k=!0},useSimple:function(){k=!1}};i.each.call(\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),function(e){var t=f(e);q[e]=L?t:P(t)}),k=!0,a(a.G+a.W,{Symbol:F}),a(a.S,\"Symbol\",q),a(a.S+a.F*!L,\"Object\",{create:N,defineProperty:I,defineProperties:j,getOwnPropertyDescriptor:V,getOwnPropertyNames:W,getOwnPropertySymbols:z}),S&&a(a.S+a.F*(!L||K),\"JSON\",{stringify:U}),h(F,\"Symbol\"),h(Math,\"Math\",!0),h(r.JSON,\"JSON\",!0)},function(e,t){},function(e,t){e.exports='<div v-bind:class=\"\\'toast toast-\\' + data.type\" style=\"display: block\" @click=clicked() v-on:mouseover=onMouseOver v-on:mouseout=onMouseOut> <toast-progress v-if=progressbar :data=data ref=progressBar></toast-progress> <div class=toast-title v-html=data.title> </div> <div class=toast-message v-html=data.msg> </div> </div>'},function(e,t){e.exports='<div> <div v-bind:class=\"\\'toast-container \\' + position\" v-for=\"(toasts, position) in list\" :key=position> <toast :data=toast v-for=\"(toast, index) in toasts\" :key=index> </toast> </div> </div>'}])})},fkB2:function(e,t,n){var i=n(\"UuGF\"),r=Math.max,o=Math.min;e.exports=function(e,t){return e=i(e),e<0?r(e+t,0):o(e,t)}},gEcC:function(e,t,n){\"use strict\";var i=n(\"Rm85\"),r=n(\"q21c\"),o={bPagination:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},gMle:function(e,t,n){\"use strict\";var i=n(\"vxJQ\");t.a={functional:!0,props:n.i(i.b)(!1),render:i.a.render}},gY5a:function(e,t,n){\"use strict\";var i=n(\"T532\"),r=n(\"q21c\"),o={bEmbed:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},ggDp:function(e,t,n){\"use strict\";function i(e){return e=\"full\"==e?\"full\":\"fast\",u.copy(i[e])}function r(e){var t=e.match(h);if(!t)return!1;var n=+t[1],i=+t[2];return n>=1&&n<=12&&i>=1&&i<=d[n]}function o(e,t){var n=e.match(f);if(!n)return!1;var i=n[1],r=n[2],o=n[3],s=n[5];return i<=23&&r<=59&&o<=59&&(!t||s)}function s(e){var t=e.split(A);return 2==t.length&&r(t[0])&&o(t[1],!0)}function a(e){return e.length<=255&&p.test(e)}function l(e){return E.test(e)&&m.test(e)}function c(e){if(x.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}var u=n(\"AM9w\"),h=/^\\d\\d\\d\\d-(\\d\\d)-(\\d\\d)$/,d=[0,31,29,31,30,31,30,31,31,30,31,30,31],f=/^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d:\\d\\d)?$/i,p=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i,m=/^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@\\/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@\\/?]|%[0-9a-f]{2})*)?$/i,g=/^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@\\/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@\\/?]|%[0-9a-f]{2})*)?$/i,v=/^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#.\\/;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i,y=/^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-?)*(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-?)*(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i,b=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,w=/^(?:\\/(?:[^~\\/]|~0|~1)*)*$|^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,C=/^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~\\/]|~0|~1)*)*)$/;e.exports=i,i.fast={date:/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,time:/^[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:z|[+-]\\d\\d:\\d\\d)?$/i,\"date-time\":/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s][0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:z|[+-]\\d\\d:\\d\\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)(?::|\\/)\\/?[^\\s]*$/i,\"uri-reference\":/^(?:(?:[a-z][a-z0-9+-.]*:)?\\/\\/)?[^\\s]*$/i,\"uri-template\":v,url:y,email:/^[a-z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:p,ipv4:/^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,ipv6:/^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,regex:c,uuid:b,\"json-pointer\":w,\"relative-json-pointer\":C},i.full={date:r,time:o,\"date-time\":s,uri:l,\"uri-reference\":g,\"uri-template\":v,url:y,email:/^[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&''*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:a,ipv4:/^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,ipv6:/^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,regex:c,uuid:b,\"json-pointer\":w,\"relative-json-pointer\":C};var A=/t|\\s/i,E=/\\/|:/,x=/[^\\\\]\\\\Z/},ghhx:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"2PZM\"),o=n(\"GnGf\"),s=[\"start\",\"end\",\"center\"],a={tag:{type:String,default:\"div\"},noGutters:{type:Boolean,default:!1},alignV:{type:String,default:null,validator:function(e){return n.i(o.d)(s.concat([\"baseline\",\"stretch\"]),e)}},alignH:{type:String,default:null,validator:function(e){return n.i(o.d)(s.concat([\"between\",\"around\"]),e)}},alignContent:{type:String,default:null,validator:function(e){return n.i(o.d)(s.concat([\"between\",\"around\",\"stretch\"]),e)}}};t.a={functional:!0,props:a,render:function(e,t){var o,s=t.props,a=t.data,l=t.children;return e(s.tag,n.i(r.a)(a,{staticClass:\"row\",class:(o={\"no-gutters\":s.noGutters},i(o,\"align-items-\"+s.alignV,s.alignV),i(o,\"justify-content-\"+s.alignH,s.alignH),i(o,\"align-content-\"+s.alignContent,s.alignContent),o)}),l)}}},hBsI:function(e,t,n){\"use strict\";e.exports=function(e,t){t||(t={}),\"function\"==typeof t&&(t={cmp:t});var n=\"boolean\"==typeof t.cycles&&t.cycles,i=t.cmp&&function(e){return function(t){return function(n,i){var r={key:n,value:t[n]},o={key:i,value:t[i]};return e(r,o)}}}(t.cmp),r=[];return function e(t){if(t&&t.toJSON&&\"function\"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if(\"number\"==typeof t)return isFinite(t)?\"\"+t:\"null\";if(\"object\"!=typeof t)return JSON.stringify(t);var o,s;if(Array.isArray(t)){for(s=\"[\",o=0;o<t.length;o++)o&&(s+=\",\"),s+=e(t[o])||\"null\";return s+\"]\"}if(null===t)return\"null\";if(-1!==r.indexOf(t)){if(n)return JSON.stringify(\"__cycle__\");throw new TypeError(\"Converting circular structure to JSON\")}var a=r.push(t)-1,l=Object.keys(t).sort(i&&i(t));for(s=\"\",o=0;o<l.length;o++){var c=l[o],u=e(t[c]);u&&(s&&(s+=\",\"),s+=JSON.stringify(c)+\":\"+u)}return r.splice(a,1),\"{\"+s+\"}\"}}(e)}},hFtj:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i,r=\" \",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+\"/\"+t,u=!e.opts.allErrors,h=\"data\"+(s||\"\"),d=\"valid\"+o,f=e.opts.$data&&a&&a.$data;if(f?(r+=\" var schema\"+o+\" = \"+e.util.getData(a.$data,s,e.dataPathArr)+\"; \",i=\"schema\"+o):i=a,(a||f)&&!1!==e.opts.uniqueItems){f&&(r+=\" var \"+d+\"; if (\"+i+\" === false || \"+i+\" === undefined) \"+d+\" = true; else if (typeof \"+i+\" != 'boolean') \"+d+\" = false; else { \"),r+=\" var \"+d+\" = true; if (\"+h+\".length > 1) { var i = \"+h+\".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(\"+h+\"[i], \"+h+\"[j])) { \"+d+\" = false; break outer; } } } } \",f&&(r+=\"  }  \"),r+=\" if (!\"+d+\") {   \";var p=p||[];p.push(r),r=\"\",!1!==e.createErrors?(r+=\" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(c)+\" , params: { i: i, j: j } \",!1!==e.opts.messages&&(r+=\" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' \"),e.opts.verbose&&(r+=\" , schema:  \",r+=f?\"validate.schema\"+l:\"\"+a,r+=\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+h+\" \"),r+=\" } \"):r+=\" {} \";var m=r;r=p.pop(),!e.compositeRule&&u?e.async?r+=\" throw new ValidationError([\"+m+\"]); \":r+=\" validate.errors = [\"+m+\"]; return false; \":r+=\" var err = \"+m+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",r+=\" } \",u&&(r+=\" else { \")}else u&&(r+=\" if (true) { \");return r}},hJx8:function(e,t,n){var i=n(\"evD5\"),r=n(\"X8DO\");e.exports=n(\"+E39\")?function(e,t,n){return i.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},hdQV:function(e,t,n){\"use strict\";var i=n(\"hpTH\"),r=n(\"Kz7p\");t.a={components:{bImg:i.a},render:function(e){var t=this;return e(\"b-img\",{props:{src:t.computedSrc,alt:t.alt,blank:t.computedBlank,blankColor:t.blankColor,width:t.computedWidth,height:t.computedHeight,fluid:t.fluid,fluidGrow:t.fluidGrow,block:t.block,thumbnail:t.thumbnail,rounded:t.rounded,left:t.left,right:t.right,center:t.center}})},data:function(){return{isShown:!1,scrollTimeout:null}},props:{src:{type:String,default:null,required:!0},alt:{type:String,default:null},width:{type:[Number,String],default:null},height:{type:[Number,String],default:null},blankSrc:{type:String,default:null},blankColor:{type:String,default:\"transparent\"},blankWidth:{type:[Number,String],default:null},blankHeight:{type:[Number,String],default:null},fluid:{type:Boolean,default:!1},fluidGrow:{type:Boolean,default:!1},block:{type:Boolean,default:!1},thumbnail:{type:Boolean,default:!1},rounded:{type:[Boolean,String],default:!1},left:{type:Boolean,default:!1},right:{type:Boolean,default:!1},center:{type:Boolean,default:!1},offset:{type:[Number,String],default:360},throttle:{type:[Number,String],default:100}},computed:{computedSrc:function(){return!this.blankSrc||this.isShown?this.src:this.blankSrc},computedBlank:function(){return!(this.isShown||this.blankSrc)},computedWidth:function(){return this.isShown?this.width:this.blankWidth||this.width},computedHeight:function(){return this.isShown?this.height:this.blankHeight||this.height}},mounted:function(){this.setListeners(!0),this.checkView()},activated:function(){this.setListeners(!0),this.checkView()},deactivated:function(){this.setListeners(!1)},beforeDdestroy:function(){this.setListeners(!1)},methods:{setListeners:function(e){clearTimeout(this.scrollTimer),this.scrollTimout=null;var t=window;e?(n.i(r.h)(t,\"scroll\",this.onScroll),n.i(r.h)(t,\"resize\",this.onScroll),n.i(r.h)(t,\"orientationchange\",this.onScroll)):(n.i(r.i)(t,\"scroll\",this.onScroll),n.i(r.i)(t,\"resize\",this.onScroll),n.i(r.i)(t,\"orientationchange\",this.onScroll))},checkView:function(){if(n.i(r.f)(this.$el)){var e=parseInt(this.offset,10)||0,t=document.documentElement,i={l:0-e,t:0-e,b:t.clientHeight+e,r:t.clientWidth+e},o=n.i(r.r)(this.$el);o.right>=i.l&&o.bottom>=i.t&&o.left<=i.r&&o.top<=i.b&&(this.isShown=!0,this.setListeners(!1))}},onScroll:function(){this.isShown?this.setListeners(!1):(clearTimeout(this.scrollTimeout),this.scrollTimeout=setTimeout(this.checkView,parseInt(this.throttle,10)||100))}}}},hequ:function(e,t,n){\"use strict\";function i(e){if(!(this instanceof i))return new i(e);e=this._opts=j.copy(e)||{},k(this),this._schemas={},this._refs={},this._fragments={},this._formats=R(e.format);var t=this._schemaUriFormat=this._formats[\"uri-reference\"];this._schemaUriFormatFunc=function(e){return t.test(e)},this._cache=e.cache||new T,this._loadingSchemas={},this._compilations=[],this.RULES=P(),this._getId=v(e),e.loopRequired=e.loopRequired||1/0,\"property\"==e.errorDataPath&&(e._errorDataPathProperty=!0),void 0===e.serialize&&(e.serialize=O),this._metaOpts=$(this),e.formats&&F(this),E(this),\"object\"==typeof e.meta&&this.addMetaSchema(e.meta),x(this),e.patternGroups&&I(this)}function r(e,t){var n;if(\"string\"==typeof e){if(!(n=this.getSchema(e)))throw new Error('no schema with key or ref \"'+e+'\"')}else{var i=this._addSchema(e);n=i.validate||this._compile(i)}var r=n(t);return!0===n.$async?\"*\"==this._opts.async?N(r):r:(this.errors=n.errors,r)}function o(e,t){var n=this._addSchema(e,void 0,t);return n.validate||this._compile(n)}function s(e,t,n,i){if(Array.isArray(e)){for(var r=0;r<e.length;r++)this.addSchema(e[r],void 0,n,i);return this}var o=this._getId(e);if(void 0!==o&&\"string\"!=typeof o)throw new Error(\"schema id must be string\");return t=D.normalizeId(t||o),S(this,t),this._schemas[t]=this._addSchema(e,n,i,!0),this}function a(e,t,n){return this.addSchema(e,t,n,!0),this}function l(e,t){var n=e.$schema;if(void 0!==n&&\"string\"!=typeof n)throw new Error(\"$schema must be a string\");if(!(n=n||this._opts.defaultMeta||c(this)))return this.logger.warn(\"meta-schema not available\"),this.errors=null,!0;var i=this._formats.uri;this._formats.uri=\"function\"==typeof i?this._schemaUriFormatFunc:this._schemaUriFormat;var r;try{r=this.validate(n,e)}finally{this._formats.uri=i}if(!r&&t){var o=\"schema is invalid: \"+this.errorsText();if(\"log\"!=this._opts.validateSchema)throw new Error(o);this.logger.error(o)}return r}function c(e){var t=e._opts.meta;return e._opts.defaultMeta=\"object\"==typeof t?e._getId(t)||t:e.getSchema(W)?W:void 0,e._opts.defaultMeta}function u(e){var t=d(this,e);switch(typeof t){case\"object\":return t.validate||this._compile(t);case\"string\":return this.getSchema(t);case\"undefined\":return h(this,e)}}function h(e,t){var n=D.schema.call(e,{schema:{}},t);if(n){var i=n.schema,r=n.root,o=n.baseId,s=B.call(e,i,r,void 0,o);return e._fragments[t]=new L({ref:t,fragment:!0,schema:i,root:r,baseId:o,validate:s}),s}}function d(e,t){return t=D.normalizeId(t),e._schemas[t]||e._refs[t]||e._fragments[t]}function f(e){if(e instanceof RegExp)return p(this,this._schemas,e),p(this,this._refs,e),this;switch(typeof e){case\"undefined\":return p(this,this._schemas),p(this,this._refs),this._cache.clear(),this;case\"string\":var t=d(this,e);return t&&this._cache.del(t.cacheKey),delete this._schemas[e],delete this._refs[e],this;case\"object\":var n=this._opts.serialize,i=n?n(e):e;this._cache.del(i);var r=this._getId(e);r&&(r=D.normalizeId(r),delete this._schemas[r],delete this._refs[r])}return this}function p(e,t,n){for(var i in t){var r=t[i];r.meta||n&&!n.test(i)||(e._cache.del(r.cacheKey),delete t[i])}}function m(e,t,n,i){if(\"object\"!=typeof e&&\"boolean\"!=typeof e)throw new Error(\"schema should be object or boolean\");var r=this._opts.serialize,o=r?r(e):e,s=this._cache.get(o);if(s)return s;i=i||!1!==this._opts.addUsedSchema;var a=D.normalizeId(this._getId(e));a&&i&&S(this,a);var l,c=!1!==this._opts.validateSchema&&!t;c&&!(l=a&&a==D.normalizeId(e.$schema))&&this.validateSchema(e,!0);var u=D.ids.call(this,e),h=new L({id:a,schema:e,localRefs:u,cacheKey:o,meta:n});return\"#\"!=a[0]&&i&&(this._refs[a]=h),this._cache.put(o,h),c&&l&&this.validateSchema(e,!0),h}function g(e,t){function n(){var t=e.validate,i=t.apply(null,arguments);return n.errors=t.errors,i}if(e.compiling)return e.validate=n,n.schema=e.schema,n.errors=null,n.root=t||n,!0===e.schema.$async&&(n.$async=!0),n;e.compiling=!0;var i;e.meta&&(i=this._opts,this._opts=this._metaOpts);var r;try{r=B.call(this,e.schema,t,e.localRefs)}finally{e.compiling=!1,e.meta&&(this._opts=i)}return e.validate=r,e.refs=r.refs,e.refVal=r.refVal,e.root=r.root,r}function v(e){switch(e.schemaId){case\"$id\":return b;case\"id\":return y;default:return w}}function y(e){return e.$id&&this.logger.warn(\"schema $id ignored\",e.$id),e.id}function b(e){return e.id&&this.logger.warn(\"schema id ignored\",e.id),e.$id}function w(e){if(e.$id&&e.id&&e.$id!=e.id)throw new Error(\"schema $id is different from id\");return e.$id||e.id}function C(e,t){if(!(e=e||this.errors))return\"No errors\";t=t||{};for(var n=void 0===t.separator?\", \":t.separator,i=void 0===t.dataVar?\"data\":t.dataVar,r=\"\",o=0;o<e.length;o++){var s=e[o];s&&(r+=i+s.dataPath+\" \"+s.message+n)}return r.slice(0,-n.length)}function A(e,t){return\"string\"==typeof t&&(t=new RegExp(t)),this._formats[e]=t,this}function E(e){var t;if(e._opts.$data&&(t=n(\"68Sp\"),e.addMetaSchema(t,t.$id,!0)),!1!==e._opts.meta){var i=n(\"l8M3\");e._opts.$data&&(i=M(i,U)),e.addMetaSchema(i,W,!0),e._refs[\"http://json-schema.org/schema\"]=W}}function x(e){var t=e._opts.schemas;if(t)if(Array.isArray(t))e.addSchema(t);else for(var n in t)e.addSchema(t[n],n)}function F(e){for(var t in e._opts.formats){var n=e._opts.formats[t];e.addFormat(t,n)}}function S(e,t){if(e._schemas[t]||e._refs[t])throw new Error('schema with key or id \"'+t+'\" already exists')}function $(e){for(var t=j.copy(e._opts),n=0;n<z.length;n++)delete t[z[n]];return t}function k(e){var t=e._opts.logger;if(!1===t)e.logger={log:_,warn:_,error:_};else{if(void 0===t&&(t=console),!(\"object\"==typeof t&&t.log&&t.warn&&t.error))throw new Error(\"logger must implement log, warn and error methods\");e.logger=t}}function _(){}var B=n(\"71cw\"),D=n(\"91JP\"),T=n(\"/CAh\"),L=n(\"xmlx\"),O=n(\"hBsI\"),R=n(\"ggDp\"),P=n(\"aQMJ\"),M=n(\"UrSP\"),I=n(\"8LYl\"),j=n(\"AM9w\"),N=n(\"sqs/\");e.exports=i,i.prototype.validate=r,i.prototype.compile=o,i.prototype.addSchema=s,i.prototype.addMetaSchema=a,i.prototype.validateSchema=l,i.prototype.getSchema=u,i.prototype.removeSchema=f,i.prototype.addFormat=A,i.prototype.errorsText=C,i.prototype._addSchema=m,i.prototype._compile=g,i.prototype.compileAsync=n(\"POcz\");var H=n(\"rocW\");i.prototype.addKeyword=H.add,i.prototype.getKeyword=H.get,i.prototype.removeKeyword=H.remove;var V=n(\"c0yX\");i.ValidationError=V.Validation,i.MissingRefError=V.MissingRef,i.$dataMetaSchema=M;var W=\"http://json-schema.org/draft-06/schema\",z=[\"removeAdditional\",\"useDefaults\",\"coerceTypes\"],U=[\"/properties\"]},hi16:function(e,t,n){\"use strict\";var i=n(\"CFyO\"),r=n(\"q21c\"),o={bFormGroup:i.a,bFormFieldset:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},hpTH:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t,n){return\"data:image/svg+xml;charset=UTF-8,\"+encodeURIComponent(s.replace(\"%{w}\",String(e)).replace(\"%{h}\",String(t)).replace(\"%{f}\",n))}var o=n(\"2PZM\"),s='<svg width=\"%{w}\" height=\"%{h}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 %{w} %{h}\" preserveAspectRatio=\"none\"><rect width=\"100%\" height=\"100%\" style=\"fill:%{f};\"></rect></svg>',a={src:{type:String,default:null},alt:{type:String,default:null},width:{type:[Number,String],default:null},height:{type:[Number,String],default:null},block:{type:Boolean,default:!1},fluid:{type:Boolean,default:!1},fluidGrow:{type:Boolean,default:!1},rounded:{type:[Boolean,String],default:!1},thumbnail:{type:Boolean,default:!1},left:{type:Boolean,default:!1},right:{type:Boolean,default:!1},center:{type:Boolean,default:!1},blank:{type:Boolean,default:!1},blankColor:{type:String,default:\"transparent\"}};t.a={functional:!0,props:a,render:function(e,t){var s,a=t.props,l=t.data,c=a.src,u=parseInt(a.width,10)?parseInt(a.width,10):null,h=parseInt(a.height,10)?parseInt(a.height,10):null,d=null,f=a.block;return a.blank&&(!h&&Boolean(u)?h=u:!u&&Boolean(h)&&(u=h),u||h||(u=1,h=1),c=r(u,h,a.blankColor||\"transparent\")),a.left?d=\"float-left\":a.right?d=\"float-right\":a.center&&(d=\"mx-auto\",f=!0),e(\"img\",n.i(o.a)(l,{attrs:{src:c,alt:a.alt,width:u?String(u):null,height:h?String(h):null},class:(s={\"img-thumbnail\":a.thumbnail,\"img-fluid\":a.fluid||a.fluidGrow,\"w-100\":a.fluidGrow,rounded:\"\"===a.rounded||!0===a.rounded},i(s,\"rounded-\"+a.rounded,\"string\"==typeof a.rounded&&\"\"!==a.rounded),i(s,d,Boolean(d)),i(s,\"d-block\",f),s)}))}}},iNir:function(e,t,n){\"use strict\";var i=n(\"zfKA\"),r=n(\"q21c\"),o={bPaginationNav:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},iiCu:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i,r,o=\" \",s=e.level,a=e.dataLevel,l=e.schema[t],c=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+\"/\"+t,h=!e.opts.allErrors,d=\"data\"+(a||\"\"),f=\"valid\"+s,p=\"errs__\"+s,m=e.opts.$data&&l&&l.$data;m?(o+=\" var schema\"+s+\" = \"+e.util.getData(l.$data,a,e.dataPathArr)+\"; \",r=\"schema\"+s):r=l;var g,v,y,b,w,C=this,A=\"definition\"+s,E=C.definition,x=\"\";if(m&&E.$data){w=\"keywordValidate\"+s;var F=E.validateSchema;o+=\" var \"+A+\" = RULES.custom['\"+t+\"'].definition; var \"+w+\" = \"+A+\".validate;\"}else{if(!(b=e.useCustomRule(C,l,e.schema,e)))return;r=\"validate.schema\"+c,w=b.code,g=E.compile,v=E.inline,y=E.macro}var S=w+\".errors\",$=\"i\"+s,k=\"ruleErr\"+s,_=E.async;if(_&&!e.async)throw new Error(\"async keyword in sync schema\");if(v||y||(o+=S+\" = null;\"),o+=\"var \"+p+\" = errors;var \"+f+\";\",m&&E.$data&&(x+=\"}\",o+=\" if (\"+r+\" === undefined) { \"+f+\" = true; } else { \",F&&(x+=\"}\",o+=\" \"+f+\" = \"+A+\".validateSchema(\"+r+\"); if (\"+f+\") { \")),v)E.statements?o+=\" \"+b.validate+\" \":o+=\" \"+f+\" = \"+b.validate+\"; \";else if(y){var B=e.util.copy(e),x=\"\";B.level++;var D=\"valid\"+B.level;B.schema=b.validate,B.schemaPath=\"\";var T=e.compositeRule;e.compositeRule=B.compositeRule=!0;var L=e.validate(B).replace(/validate\\.schema/g,w);e.compositeRule=B.compositeRule=T,o+=\" \"+L}else{var O=O||[];O.push(o),o=\"\",o+=\"  \"+w+\".call( \",e.opts.passContext?o+=\"this\":o+=\"self\",g||!1===E.schema?o+=\" , \"+d+\" \":o+=\" , \"+r+\" , \"+d+\" , validate.schema\"+e.schemaPath+\" \",o+=\" , (dataPath || '')\",'\"\"'!=e.errorPath&&(o+=\" + \"+e.errorPath);var R=a?\"data\"+(a-1||\"\"):\"parentData\",P=a?e.dataPathArr[a]:\"parentDataProperty\";o+=\" , \"+R+\" , \"+P+\" , rootData )  \";var M=o;o=O.pop(),!1===E.errors?(o+=\" \"+f+\" = \",_&&(o+=\"\"+e.yieldAwait),o+=M+\"; \"):_?(S=\"customErrors\"+s,o+=\" var \"+S+\" = null; try { \"+f+\" = \"+e.yieldAwait+M+\"; } catch (e) { \"+f+\" = false; if (e instanceof ValidationError) \"+S+\" = e.errors; else throw e; } \"):o+=\" \"+S+\" = null; \"+f+\" = \"+M+\"; \"}if(E.modifying&&(o+=\" if (\"+R+\") \"+d+\" = \"+R+\"[\"+P+\"];\"),o+=\"\"+x,E.valid)h&&(o+=\" if (true) { \");else{o+=\" if ( \",void 0===E.valid?(o+=\" !\",o+=y?\"\"+D:\"\"+f):o+=\" \"+!E.valid+\" \",o+=\") { \",i=C.keyword;var O=O||[];O.push(o),o=\"\";var O=O||[];O.push(o),o=\"\",!1!==e.createErrors?(o+=\" { keyword: '\"+(i||\"custom\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(u)+\" , params: { keyword: '\"+C.keyword+\"' } \",!1!==e.opts.messages&&(o+=\" , message: 'should pass \\\"\"+C.keyword+\"\\\" keyword validation' \"),e.opts.verbose&&(o+=\" , schema: validate.schema\"+c+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),o+=\" } \"):o+=\" {} \";var I=o;o=O.pop(),!e.compositeRule&&h?e.async?o+=\" throw new ValidationError([\"+I+\"]); \":o+=\" validate.errors = [\"+I+\"]; return false; \":o+=\" var err = \"+I+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \";var j=o;o=O.pop(),v?E.errors?\"full\"!=E.errors&&(o+=\"  for (var \"+$+\"=\"+p+\"; \"+$+\"<errors; \"+$+\"++) { var \"+k+\" = vErrors[\"+$+\"]; if (\"+k+\".dataPath === undefined) \"+k+\".dataPath = (dataPath || '') + \"+e.errorPath+\"; if (\"+k+\".schemaPath === undefined) { \"+k+'.schemaPath = \"'+u+'\"; } ',e.opts.verbose&&(o+=\" \"+k+\".schema = \"+r+\"; \"+k+\".data = \"+d+\"; \"),o+=\" } \"):!1===E.errors?o+=\" \"+j+\" \":(o+=\" if (\"+p+\" == errors) { \"+j+\" } else {  for (var \"+$+\"=\"+p+\"; \"+$+\"<errors; \"+$+\"++) { var \"+k+\" = vErrors[\"+$+\"]; if (\"+k+\".dataPath === undefined) \"+k+\".dataPath = (dataPath || '') + \"+e.errorPath+\"; if (\"+k+\".schemaPath === undefined) { \"+k+'.schemaPath = \"'+u+'\"; } ',e.opts.verbose&&(o+=\" \"+k+\".schema = \"+r+\"; \"+k+\".data = \"+d+\"; \"),o+=\" } } \"):y?(o+=\"   var err =   \",!1!==e.createErrors?(o+=\" { keyword: '\"+(i||\"custom\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(u)+\" , params: { keyword: '\"+C.keyword+\"' } \",!1!==e.opts.messages&&(o+=\" , message: 'should pass \\\"\"+C.keyword+\"\\\" keyword validation' \"),e.opts.verbose&&(o+=\" , schema: validate.schema\"+c+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),o+=\" } \"):o+=\" {} \",o+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",!e.compositeRule&&h&&(e.async?o+=\" throw new ValidationError(vErrors); \":o+=\" validate.errors = vErrors; return false; \")):!1===E.errors?o+=\" \"+j+\" \":(o+=\" if (Array.isArray(\"+S+\")) { if (vErrors === null) vErrors = \"+S+\"; else vErrors = vErrors.concat(\"+S+\"); errors = vErrors.length;  for (var \"+$+\"=\"+p+\"; \"+$+\"<errors; \"+$+\"++) { var \"+k+\" = vErrors[\"+$+\"]; if (\"+k+\".dataPath === undefined) \"+k+\".dataPath = (dataPath || '') + \"+e.errorPath+\";  \"+k+'.schemaPath = \"'+u+'\";  ',e.opts.verbose&&(o+=\" \"+k+\".schema = \"+r+\"; \"+k+\".data = \"+d+\"; \"),o+=\" } } else { \"+j+\" } \"),o+=\" } \",h&&(o+=\" else { \")}return o}},il3A:function(e,t,n){\"use strict\";function i(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.a;return(n.i(o.b)(e)?e.slice():n.i(r.b)(e)).reduce(function(e,n){return e[i(n)]=t[n],e},{})}t.a=i;var r=n(\"/CDJ\"),o=n(\"GnGf\"),s=n(\"UWlG\")},il5r:function(e,t,n){\"use strict\";function i(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement(\"tr\");if(t.node=this,e.tr=t,\"tree\"===this.editor.options.mode){e.tdDrag=document.createElement(\"td\");var n=document.createElement(\"td\");e.tdMenu=n;var i=document.createElement(\"button\");i.type=\"button\",i.className=\"jsoneditor-contextmenu\",i.title=\"Click to open the actions menu (Ctrl+M)\",e.menu=i,n.appendChild(e.menu)}var r=document.createElement(\"td\"),o=document.createElement(\"div\");return o.innerHTML=\"(\"+s(\"empty\")+\")\",o.className=\"jsoneditor-readonly\",r.appendChild(o),e.td=r,e.text=o,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+\"px\");var n=e.text;n&&(n.innerHTML=\"(\"+s(\"empty\")+\" \"+this.parent.type+\")\");var i=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&i.appendChild(e.tdDrag),e.tdMenu&&i.appendChild(e.tdMenu),i.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&i.removeChild(e.tdDrag),e.tdMenu&&i.removeChild(e.tdMenu),i.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,n){var i=this,r=e.TYPE_TITLES,a=[{text:s(\"auto\"),className:\"jsoneditor-type-auto\",title:r.auto,click:function(){i._onAppend(\"\",\"\",\"auto\")}},{text:s(\"array\"),className:\"jsoneditor-type-array\",title:r.array,click:function(){i._onAppend(\"\",[])}},{text:s(\"object\"),className:\"jsoneditor-type-object\",title:r.object,click:function(){i._onAppend(\"\",{})}},{text:s(\"string\"),className:\"jsoneditor-type-string\",title:r.string,click:function(){i._onAppend(\"\",\"\",\"string\")}}];i.addTemplates(a,!0);var l=[{text:s(\"appendText\"),title:s(\"appendTitleAuto\"),submenuTitle:s(\"appendSubmenuTitle\"),className:\"jsoneditor-insert\",click:function(){i._onAppend(\"\",\"\",\"auto\")},submenu:a}];new o(l,{close:n}).show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,n=e.target||e.srcElement,i=this.dom;if(n==i.menu&&(\"mouseover\"==t?this.editor.highlighter.highlight(this.parent):\"mouseout\"==t&&this.editor.highlighter.unhighlight()),\"click\"==t&&n==i.menu){var o=this.editor.highlighter;o.highlight(this.parent),o.lock(),r.addClassName(i.menu,\"jsoneditor-selected\"),this.showContextMenu(i.menu,function(){r.removeClassName(i.menu,\"jsoneditor-selected\"),o.unlock(),o.unhighlight()})}\"keydown\"==t&&this.onKeyDown(e)},t}var r=n(\"QmdE\"),o=n(\"pk12\"),s=n(\"+LpG\").translate;e.exports=i},inTl:function(e,t,n){\"use strict\";var i=n(\"FhUz\"),r=n(\"q21c\"),o={bPopover:i.a},s={install:function(e){n.i(r.b)(e,o)}};n.i(r.a)(s),t.a=s},jTvC:function(e,t,n){\"use strict\";function i(e,t,n){if(!(this instanceof i))throw new Error('JSONEditor constructor called without \"new\".');var r=a.getInternetExplorerVersion();if(-1!=r&&r<9)throw new Error(\"Unsupported browser, IE9 or newer required. Please install the newest version of your browser.\");if(t&&(t.error&&(console.warn('Option \"error\" has been renamed to \"onError\"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option \"change\" has been renamed to \"onChange\"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option \"editable\" has been renamed to \"onEditable\"'),t.onEditable=t.editable,delete t.editable),t)){var o=[\"ajv\",\"schema\",\"schemaRefs\",\"templates\",\"ace\",\"theme\",\"autocomplete\",\"onChange\",\"onEditable\",\"onError\",\"onModeChange\",\"escapeUnicode\",\"history\",\"search\",\"mode\",\"modes\",\"name\",\"indentation\",\"sortObjectKeys\",\"navigationBar\",\"statusBar\",\"languages\",\"language\"];Object.keys(t).forEach(function(e){-1===o.indexOf(e)&&console.warn('Unknown option \"'+e+'\". This option will be ignored')})}arguments.length&&this._create(e,t,n)}var r;try{r=n(\"hequ\")}catch(e){}var o=n(\"Djfr\"),s=n(\"YrmI\"),a=n(\"QmdE\");i.modes={},i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._create=function(e,t,n){this.container=e,this.options=t||{},this.json=n||{};var i=this.options.mode||this.options.modes&&this.options.modes[0]||\"tree\";this.setMode(i)},i.prototype.destroy=function(){},i.prototype.set=function(e){this.json=e},i.prototype.get=function(){return this.json},i.prototype.setText=function(e){this.json=a.parse(e)},i.prototype.getText=function(){return JSON.stringify(this.json)},i.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},i.prototype.getName=function(){return this.options&&this.options.name},i.prototype.setMode=function(e){var t,n,r=this.container,o=a.extend({},this.options),s=o.mode;o.mode=e;var l=i.modes[e];if(!l)throw new Error('Unknown mode \"'+o.mode+'\"');try{var c=\"text\"==l.data;if(n=this.getName(),t=this[c?\"getText\":\"get\"](),this.destroy(),a.clear(this),a.extend(this,l.mixin),this.create(r,o),this.setName(n),this[c?\"setText\":\"set\"](t),\"function\"==typeof l.load)try{l.load.call(this)}catch(e){console.error(e)}if(\"function\"==typeof o.onModeChange&&e!==s)try{o.onModeChange(e,s)}catch(e){console.error(e)}}catch(e){this._onError(e)}},i.prototype.getMode=function(){return this.options.mode},i.prototype._onError=function(e){if(!this.options||\"function\"!=typeof this.options.onError)throw e;this.options.onError(e)},i.prototype.setSchema=function(e,t){if(e){var n;try{n=this.options.ajv||r({allErrors:!0,verbose:!0})}catch(e){console.warn(\"Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.\")}if(n){if(t){for(var i in t)n.removeSchema(i),t[i]&&n.addSchema(t[i],i);this.options.schemaRefs=t}this.validateSchema=n.compile(e),this.options.schema=e,this.validate()}this.refresh()}else this.validateSchema=null,this.options.schema=null,this.options.schemaRefs=null,this.validate(),this.refresh()},i.prototype.validate=function(){},i.prototype.refresh=function(){},i.registerMode=function(e){var t,n;if(a.isArray(e))for(t=0;t<e.length;t++)i.registerMode(e[t]);else{if(!(\"mode\"in e))throw new Error('Property \"mode\" missing');if(!(\"mixin\"in e))throw new Error('Property \"mixin\" missing');if(!(\"data\"in e))throw new Error('Property \"data\" missing');var r=e.mode;if(r in i.modes)throw new Error('Mode \"'+r+'\" already registered');if(\"function\"!=typeof e.mixin.create)throw new Error('Required function \"create\" missing on mixin');var o=[\"setMode\",\"registerMode\",\"modes\"];for(t=0;t<o.length;t++)if((n=o[t])in e.mixin)throw new Error('Reserved property \"'+n+'\" not allowed in mixin');i.modes[r]=e}},i.registerMode(o),i.registerMode(s),e.exports=i},k5uS:function(e,t,n){\"use strict\";function i(e){function t(e){var t,n;document.createRange?(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),n=window.getSelection(),n.removeAllRanges(),n.addRange(t)):document.selection&&(t=document.body.createTextRange(),t.moveToElementText(e),t.collapse(!1),t.select())}function n(e){return void 0===a&&(a=document.createElement(\"span\"),a.style.visibility=\"hidden\",a.style.position=\"fixed\",a.style.outline=\"0\",a.style.margin=\"0\",a.style.padding=\"0\",a.style.border=\"0\",a.style.left=\"0\",a.style.whiteSpace=\"pre\",a.style.fontSize=i,a.style.fontFamily=r,a.style.fontWeight=\"normal\",document.body.appendChild(a)),a.innerHTML=String(e).replace(/&/g,\"&amp;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#39;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\"),a.getBoundingClientRect().right}e=e||{},e.confirmKeys=e.confirmKeys||[39,35,9],e.caseSensitive=e.caseSensitive||!1;var i=\"\",r=\"\",o=document.createElement(\"div\");o.style.position=\"relative\",o.style.outline=\"0\",o.style.border=\"0\",o.style.margin=\"0\",o.style.padding=\"0\";var s=document.createElement(\"div\");s.className=\"autocomplete dropdown\",s.style.position=\"absolute\",s.style.visibility=\"hidden\";var a,l,c={onArrowDown:function(){},onArrowUp:function(){},onEnter:function(){},onTab:function(){},startFrom:0,options:[],element:null,elementHint:null,elementStyle:null,wrapper:o,show:function(e,t,n){this.startFrom=t,this.wrapper.remove(),this.elementHint&&(this.elementHint.remove(),this.elementHint=null),\"\"==i&&(i=window.getComputedStyle(e).getPropertyValue(\"font-size\")),\"\"==r&&(r=window.getComputedStyle(e).getPropertyValue(\"font-family\"));e.getBoundingClientRect().right,e.getBoundingClientRect().left;s.style.marginLeft=\"0\",s.style.marginTop=e.getBoundingClientRect().height+\"px\",this.options=n,this.element!=e&&(this.element=e,this.elementStyle={zIndex:this.element.style.zIndex,position:this.element.style.position,backgroundColor:this.element.style.backgroundColor,borderColor:this.element.style.borderColor}),this.element.style.zIndex=3,this.element.style.position=\"relative\",this.element.style.backgroundColor=\"transparent\",this.element.style.borderColor=\"transparent\",this.elementHint=e.cloneNode(),this.elementHint.className=\"autocomplete hint\",this.elementHint.style.zIndex=2,this.elementHint.style.position=\"absolute\",this.elementHint.onfocus=function(){this.element.focus()}.bind(this),this.element.addEventListener&&(this.element.removeEventListener(\"keydown\",h),this.element.addEventListener(\"keydown\",h,!1),this.element.removeEventListener(\"blur\",d),this.element.addEventListener(\"blur\",d,!1)),o.appendChild(this.elementHint),o.appendChild(s),e.parentElement.appendChild(o),this.repaint(e)},setText:function(e){this.element.innerText=e},getText:function(){return this.element.innerText},hideDropDown:function(){this.wrapper.remove(),this.elementHint&&(this.elementHint.remove(),this.elementHint=null,u.hide(),this.element.style.zIndex=this.elementStyle.zIndex,this.element.style.position=this.elementStyle.position,this.element.style.backgroundColor=this.elementStyle.backgroundColor,this.element.style.borderColor=this.elementStyle.borderColor)},repaint:function(t){var i=t.innerText;i=i.replace(\"\\n\",\"\");var r=(this.startFrom,this.options,this.options.length),o=i.substring(this.startFrom);l=i.substring(0,this.startFrom);for(var a=0;a<r;a++){var c=this.options[a];if(!e.caseSensitive&&0===c.toLowerCase().indexOf(o.toLowerCase())||e.caseSensitive&&0===c.indexOf(o)){this.elementHint.innerText=l+o+c.substring(o.length),this.elementHint.realInnerText=l+c;break}}s.style.left=n(l)+\"px\",u.refresh(o,this.options),this.elementHint.style.width=n(this.elementHint.innerText)+10+\"px\",\"hidden\"==s.style.visibility||(this.elementHint.style.width=n(this.elementHint.innerText)+s.clientWidth+\"px\")}},u=function(t,n){var i=[],r=0,o=-1,s=function(){this.style.outline=\"1px solid #ddd\"},a=function(){this.style.outline=\"0\"},l=function(){c.hide(),c.onmouseselection(this.__hint,c.rs)},c={rs:n,hide:function(){t.style.visibility=\"hidden\"},refresh:function(n,o){t.style.visibility=\"hidden\",r=0,t.innerHTML=\"\";var u=window.innerHeight||document.documentElement.clientHeight,h=t.parentNode.getBoundingClientRect(),d=h.top-6,f=u-h.bottom-6;i=[];for(var p=0;p<o.length;p++)if(!(e.caseSensitive&&0!==o[p].indexOf(n)||!e.caseSensitive&&0!==o[p].toLowerCase().indexOf(n.toLowerCase()))){var m=document.createElement(\"div\");m.className=\"item\",m.onmouseover=s,m.onmouseout=a,m.onmousedown=l,m.__hint=o[p],m.innerHTML=o[p].substring(0,n.length)+\"<b>\"+o[p].substring(n.length)+\"</b>\",i.push(m),t.appendChild(m)}0!==i.length&&(1===i.length&&(n.toLowerCase()===i[0].__hint.toLowerCase()&&!e.caseSensitive||n===i[0].__hint&&e.caseSensitive)||i.length<2||(c.highlight(0),d>3*f?(t.style.maxHeight=d+\"px\",t.style.top=\"\",t.style.bottom=\"100%\"):(t.style.top=\"100%\",t.style.bottom=\"\",t.style.maxHeight=f+\"px\"),t.style.visibility=\"visible\"))},highlight:function(e){-1!=o&&i[o]&&(i[o].className=\"item\"),i[e].className=\"item hover\",o=e},move:function(e){return\"hidden\"===t.style.visibility?\"\":r+e===-1||r+e===i.length?i[r].__hint:(r+=e,c.highlight(r),i[r].__hint)},onmouseselection:function(){}};return c}(s,c),h=function(n){n=n||window.event;var i=n.keyCode;if(null!=this.elementHint&&33!=i&&34!=i){if(27==i)return c.hideDropDown(),c.element.focus(),n.preventDefault(),void n.stopPropagation();var r=this.element.innerText;r=r.replace(\"\\n\",\"\");this.startFrom;if(e.confirmKeys.indexOf(i)>=0)return 9==i&&0==this.elementHint.innerText.length&&c.onTab(),void(this.elementHint.innerText.length>0&&this.element.innerText!=this.elementHint.realInnerText&&(this.element.innerText=this.elementHint.realInnerText,c.hideDropDown(),t(this.element),9==i&&(c.element.focus(),n.preventDefault(),n.stopPropagation())));if(13!=i){if(40==i){var o=r.substring(this.startFrom),a=u.move(1);return\"\"==a&&c.onArrowDown(),this.elementHint.innerText=l+o+a.substring(o.length),this.elementHint.realInnerText=l+a,n.preventDefault(),void n.stopPropagation()}if(38==i){var o=r.substring(this.startFrom),a=u.move(-1);return\"\"==a&&c.onArrowUp(),this.elementHint.innerText=l+o+a.substring(o.length),this.elementHint.realInnerText=l+a,n.preventDefault(),void n.stopPropagation()}}else if(0==this.elementHint.innerText.length)c.onEnter();else{var h=\"hidden\"==s.style.visibility;if(u.hide(),h)return c.hideDropDown(),c.element.focus(),void c.onEnter();this.element.innerText=this.elementHint.realInnerText,c.hideDropDown(),t(this.element),n.preventDefault(),n.stopPropagation()}}}.bind(c),d=function(e){c.hideDropDown()}.bind(c);return u.onmouseselection=function(e,n){n.element.innerText=n.elementHint.innerText=l+e,n.hideDropDown(),window.setTimeout(function(){n.element.focus(),t(n.element)},1)},c}e.exports=i},kM2E:function(e,t,n){var i=n(\"7KvD\"),r=n(\"FeBl\"),o=n(\"+ZMJ\"),s=n(\"hJx8\"),a=function(e,t,n){var l,c,u,h=e&a.F,d=e&a.G,f=e&a.S,p=e&a.P,m=e&a.B,g=e&a.W,v=d?r:r[t]||(r[t]={}),y=v.prototype,b=d?i:f?i[t]:(i[t]||{}).prototype;d&&(n=t);for(l in n)(c=!h&&b&&void 0!==b[l])&&l in v||(u=c?b[l]:n[l],v[l]=d&&\"function\"!=typeof b[l]?n[l]:m&&c?o(u,i):g&&b[l]==u?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(u):p&&\"function\"==typeof u?o(Function.call,u):u,p&&((v.virtual||(v.virtual={}))[l]=u,e&a.R&&y&&!y[l]&&s(y,l,u)))};a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,e.exports=a},kMPS:function(e,t,n){\"use strict\";function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,o){t=t||\"&\",n=n||\"=\";var s={};if(\"string\"!=typeof e||0===e.length)return s;var a=/\\+/g;e=e.split(t);var l=1e3;o&&\"number\"==typeof o.maxKeys&&(l=o.maxKeys);var c=e.length;l>0&&c>l&&(c=l);for(var u=0;u<c;++u){var h,d,f,p,m=e[u].replace(a,\"%20\"),g=m.indexOf(n);g>=0?(h=m.substr(0,g),d=m.substr(g+1)):(h=m,d=\"\"),f=decodeURIComponent(h),p=decodeURIComponent(d),i(s,f)?r(s[f])?s[f].push(p):s[f]=[s[f],p]:s[f]=p}return s};var r=Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)}},kX7f:function(e,t,n){!function(){var e=function(){return this}();e||\"undefined\"==typeof window||(e=window);var t=function(e,n,i){if(\"string\"!=typeof e)return void(t.original?t.original.apply(this,arguments):(console.error(\"dropping module because define wasn't a string.\"),console.trace()));2==arguments.length&&(i=n),t.modules[e]||(t.payloads[e]=i,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(\"string\"==typeof t){var r=o(e,t);if(void 0!=r)return n&&n(),r}else if(\"[object Array]\"===Object.prototype.toString.call(t)){for(var s=[],a=0,l=t.length;a<l;++a){var c=o(e,t[a]);if(void 0==c&&i.original)return;s.push(c)}return n&&n.apply(null,s)||!0}},i=function(e,t){var r=n(\"\",e,t);return void 0==r&&i.original?i.original.apply(this,arguments):r},r=function(e,t){if(-1!==t.indexOf(\"!\")){var n=t.split(\"!\");return r(e,n[0])+\"!\"+r(e,n[1])}if(\".\"==t.charAt(0)){var i=e.split(\"/\").slice(0,-1).join(\"/\");for(t=i+\"/\"+t;-1!==t.indexOf(\".\")&&o!=t;){var o=t;t=t.replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return t},o=function(e,i){i=r(e,i);var o=t.modules[i];if(!o){if(\"function\"==typeof(o=t.payloads[i])){var s={},a={id:i,uri:\"\",exports:s,packaged:!0};s=o(function(e,t){return n(i,e,t)},s,a)||a.exports,t.modules[i]=s,delete t.payloads[i]}o=t.modules[i]=s||o}return o};!function(n){var r=e;n&&(e[n]||(e[n]={}),r=e[n]),r.define&&r.define.packaged||(t.original=r.define,r.define=t,r.define.packaged=!0),r.acequire&&r.acequire.packaged||(i.original=r.acequire,r.acequire=i,r.acequire.packaged=!0)}(\"ace\")}(),ace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";function i(e){return(e.global?\"g\":\"\")+(e.ignoreCase?\"i\":\"\")+(e.multiline?\"m\":\"\")+(e.extended?\"x\":\"\")+(e.sticky?\"y\":\"\")}function r(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var i=n||0;i<e.length;i++)if(e[i]===t)return i;return-1}var o={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},s=void 0===o.exec.call(/()??/,\"\")[1],a=function(){var e=/^/g;return o.test.call(e,\"\"),!e.lastIndex}();a&&s||(RegExp.prototype.exec=function(e){var t,n,l=o.exec.apply(this,arguments);if(\"string\"==typeof e&&l){if(!s&&l.length>1&&r(l,\"\")>-1&&(n=RegExp(this.source,o.replace.call(i(this),\"g\",\"\")),o.replace.call(e.slice(l.index),n,function(){for(var e=1;e<arguments.length-2;e++)void 0===arguments[e]&&(l[e]=void 0)})),this._xregexp&&this._xregexp.captureNames)for(var c=1;c<l.length;c++)(t=this._xregexp.captureNames[c-1])&&(l[t]=l[c]);!a&&this.global&&!l[0].length&&this.lastIndex>l.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=o.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(e,t,n){function i(){}function r(e){try{return Object.defineProperty(e,\"sentinel\",{}),\"sentinel\"in e}catch(e){}}function o(e){return e=+e,e!==e?e=0:0!==e&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if(\"function\"!=typeof t)throw new TypeError(\"Function.prototype.bind called on incompatible \"+t);var n=p.call(arguments,1),r=function(){if(this instanceof r){var i=t.apply(this,n.concat(p.call(arguments)));return Object(i)===i?i:this}return t.apply(e,n.concat(p.call(arguments)))};return t.prototype&&(i.prototype=t.prototype,r.prototype=new i,i.prototype=null),r});var s,a,l,c,u,h=Function.prototype.call,d=Array.prototype,f=Object.prototype,p=d.slice,m=h.bind(f.toString),g=h.bind(f.hasOwnProperty);if((u=g(f,\"__defineGetter__\"))&&(s=h.bind(f.__defineGetter__),a=h.bind(f.__defineSetter__),l=h.bind(f.__lookupGetter__),c=h.bind(f.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,n=[];if(n.splice.apply(n,e(20)),n.splice.apply(n,e(26)),t=n.length,n.splice(5,0,\"XXX\"),n.length,t+1==n.length)return!0}()){var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(p.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):void 0==e?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var i=this.slice(e,e+t),r=p.call(arguments,2),o=r.length;if(e===n)o&&this.push.apply(this,r);else{var s=Math.min(t,n-e),a=e+s,l=a+o-s,c=n-a,u=n-s;if(l<a)for(var h=0;h<c;++h)this[l+h]=this[a+h];else if(l>a)for(h=c;h--;)this[l+h]=this[a+h];if(o&&e===u)this.length=u,this.push.apply(this,r);else for(this.length=u+o,h=0;h<o;++h)this[e+h]=r[h]}return i};Array.isArray||(Array.isArray=function(e){return\"[object Array]\"==m(e)});var y=Object(\"a\"),b=\"a\"!=y[0]||!(0 in y);if(Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=D(this),n=b&&\"[object String]\"==m(this)?this.split(\"\"):t,i=arguments[1],r=-1,o=n.length>>>0;if(\"[object Function]\"!=m(e))throw new TypeError;for(;++r<o;)r in n&&e.call(i,n[r],r,t)}),Array.prototype.map||(Array.prototype.map=function(e){var t=D(this),n=b&&\"[object String]\"==m(this)?this.split(\"\"):t,i=n.length>>>0,r=Array(i),o=arguments[1];if(\"[object Function]\"!=m(e))throw new TypeError(e+\" is not a function\");for(var s=0;s<i;s++)s in n&&(r[s]=e.call(o,n[s],s,t));return r}),Array.prototype.filter||(Array.prototype.filter=function(e){var t,n=D(this),i=b&&\"[object String]\"==m(this)?this.split(\"\"):n,r=i.length>>>0,o=[],s=arguments[1];if(\"[object Function]\"!=m(e))throw new TypeError(e+\" is not a function\");for(var a=0;a<r;a++)a in i&&(t=i[a],e.call(s,t,a,n)&&o.push(t));return o}),Array.prototype.every||(Array.prototype.every=function(e){var t=D(this),n=b&&\"[object String]\"==m(this)?this.split(\"\"):t,i=n.length>>>0,r=arguments[1];if(\"[object Function]\"!=m(e))throw new TypeError(e+\" is not a function\");for(var o=0;o<i;o++)if(o in n&&!e.call(r,n[o],o,t))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(e){var t=D(this),n=b&&\"[object String]\"==m(this)?this.split(\"\"):t,i=n.length>>>0,r=arguments[1];if(\"[object Function]\"!=m(e))throw new TypeError(e+\" is not a function\");for(var o=0;o<i;o++)if(o in n&&e.call(r,n[o],o,t))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=D(this),n=b&&\"[object String]\"==m(this)?this.split(\"\"):t,i=n.length>>>0;if(\"[object Function]\"!=m(e))throw new TypeError(e+\" is not a function\");if(!i&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var r,o=0;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in n){r=n[o++];break}if(++o>=i)throw new TypeError(\"reduce of empty array with no initial value\")}for(;o<i;o++)o in n&&(r=e.call(void 0,r,n[o],o,t));return r}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(e){var t=D(this),n=b&&\"[object String]\"==m(this)?this.split(\"\"):t,i=n.length>>>0;if(\"[object Function]\"!=m(e))throw new TypeError(e+\" is not a function\");if(!i&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var r,o=i-1;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in n){r=n[o--];break}if(--o<0)throw new TypeError(\"reduceRight of empty array with no initial value\")}do{o in this&&(r=e.call(void 0,r,n[o],o,t))}while(o--);return r}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=b&&\"[object String]\"==m(this)?this.split(\"\"):D(this),n=t.length>>>0;if(!n)return-1;var i=0;for(arguments.length>1&&(i=o(arguments[1])),i=i>=0?i:Math.max(0,n+i);i<n;i++)if(i in t&&t[i]===e)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(e){var t=b&&\"[object String]\"==m(this)?this.split(\"\"):D(this),n=t.length>>>0;if(!n)return-1;var i=n-1;for(arguments.length>1&&(i=Math.min(i,o(arguments[1]))),i=i>=0?i:n-Math.abs(i);i>=0;i--)if(i in t&&e===t[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:f)}),!Object.getOwnPropertyDescriptor){Object.getOwnPropertyDescriptor=function(e,t){if(\"object\"!=typeof e&&\"function\"!=typeof e||null===e)throw new TypeError(\"Object.getOwnPropertyDescriptor called on a non-object: \"+e);if(g(e,t)){var n,i,r;if(n={enumerable:!0,configurable:!0},u){var o=e.__proto__;e.__proto__=f;var i=l(e,t),r=c(e,t);if(e.__proto__=o,i||r)return i&&(n.get=i),r&&(n.set=r),n}return n.value=e[t],n}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var w;w=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var n;if(null===e)n=w();else{if(\"object\"!=typeof e)throw new TypeError(\"typeof prototype[\"+typeof e+\"] != 'object'\");var i=function(){};i.prototype=e,n=new i,n.__proto__=e}return void 0!==t&&Object.defineProperties(n,t),n}}if(Object.defineProperty){var C=r({}),A=\"undefined\"==typeof document||r(document.createElement(\"div\"));if(!C||!A)var E=Object.defineProperty}if(!Object.defineProperty||E){Object.defineProperty=function(e,t,n){if(\"object\"!=typeof e&&\"function\"!=typeof e||null===e)throw new TypeError(\"Object.defineProperty called on non-object: \"+e);if(\"object\"!=typeof n&&\"function\"!=typeof n||null===n)throw new TypeError(\"Property description must be an object: \"+n);if(E)try{return E.call(Object,e,t,n)}catch(e){}if(g(n,\"value\"))if(u&&(l(e,t)||c(e,t))){var i=e.__proto__;e.__proto__=f,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!u)throw new TypeError(\"getters & setters can not be defined on this javascript engine\");g(n,\"get\")&&s(e,t,n.get),g(n,\"set\")&&a(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)g(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(e){Object.freeze=function(e){return function(t){return\"function\"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t=\"\";g(e,t);)t+=\"?\";e[t]=!0;var n=g(e,t);return delete e[t],n}),!Object.keys){var x=!0,F=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],S=F.length;for(var $ in{toString:null})x=!1;Object.keys=function(e){if(\"object\"!=typeof e&&\"function\"!=typeof e||null===e)throw new TypeError(\"Object.keys called on a non-object\");var t=[];for(var n in e)g(e,n)&&t.push(n);if(x)for(var i=0,r=S;i<r;i++){var o=F[i];g(e,o)&&t.push(o)}return t}}Date.now||(Date.now=function(){return(new Date).getTime()});var k=\"\\t\\n\\v\\f\\r   ᠎             　\\u2028\\u2029\\ufeff\";if(!String.prototype.trim||k.trim()){k=\"[\"+k+\"]\";var _=new RegExp(\"^\"+k+k+\"*\"),B=new RegExp(k+k+\"*$\");String.prototype.trim=function(){return String(this).replace(_,\"\").replace(B,\"\")}}var D=function(e){if(null==e)throw new TypeError(\"can't convert \"+e+\" to object\");return Object(e)}}),ace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(e,t,n){\"use strict\";e(\"./regexp\"),e(\"./es5-shim\")}),ace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";if(t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName(\"head\")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||\"http://www.w3.org/1999/xhtml\",e):document.createElement(e)},t.hasCssClass=function(e,t){return-1!==(e.className+\"\").split(/\\s+/g).indexOf(t)},t.addCssClass=function(e,n){t.hasCssClass(e,n)||(e.className+=\" \"+n)},t.removeCssClass=function(e,t){for(var n=e.className.split(/\\s+/g);;){var i=n.indexOf(t);if(-1==i)break;n.splice(i,1)}e.className=n.join(\" \")},t.toggleCssClass=function(e,t){for(var n=e.className.split(/\\s+/g),i=!0;;){var r=n.indexOf(t);if(-1==r)break;i=!1,n.splice(r,1)}return i&&n.push(t),e.className=n.join(\" \"),i},t.setCssClass=function(e,n,i){i?t.addCssClass(e,n):t.removeCssClass(e,n)},t.hasCssString=function(e,t){var n,i=0;if(t=t||document,t.createStyleSheet&&(n=t.styleSheets)){for(;i<n.length;)if(n[i++].owningElement.id===e)return!0}else if(n=t.getElementsByTagName(\"style\"))for(;i<n.length;)if(n[i++].id===e)return!0;return!1},t.importCssString=function(e,n,i){if(i=i||document,n&&t.hasCssString(n,i))return null;var r;n&&(e+=\"\\n/*# sourceURL=ace/css/\"+n+\" */\"),i.createStyleSheet?(r=i.createStyleSheet(),r.cssText=e,n&&(r.owningElement.id=n)):(r=t.createElement(\"style\"),r.appendChild(i.createTextNode(e)),n&&(r.id=n),t.getDocumentHead(i).appendChild(r))},t.importCssStylsheet=function(e,n){if(n.createStyleSheet)n.createStyleSheet(e);else{var i=t.createElement(\"link\");i.rel=\"stylesheet\",i.href=e,t.getDocumentHead(n).appendChild(i)}},t.getInnerWidth=function(e){return parseInt(t.computedStyle(e,\"paddingLeft\"),10)+parseInt(t.computedStyle(e,\"paddingRight\"),10)+e.clientWidth},t.getInnerHeight=function(e){return parseInt(t.computedStyle(e,\"paddingTop\"),10)+parseInt(t.computedStyle(e,\"paddingBottom\"),10)+e.clientHeight},t.scrollbarWidth=function(e){var n=t.createElement(\"ace_inner\");n.style.width=\"100%\",n.style.minWidth=\"0px\",n.style.height=\"200px\",n.style.display=\"block\";var i=t.createElement(\"ace_outer\"),r=i.style;r.position=\"absolute\",r.left=\"-10000px\",r.overflow=\"hidden\",r.width=\"200px\",r.minWidth=\"0px\",r.height=\"150px\",r.display=\"block\",i.appendChild(n);var o=e.documentElement;o.appendChild(i);var s=n.offsetWidth;r.overflow=\"scroll\";var a=n.offsetWidth;return s==a&&(a=i.clientWidth),o.removeChild(i),s-a},\"undefined\"==typeof document)return void(t.importCssString=function(){});void 0!==window.pageYOffset?(t.getPageScrollTop=function(){return window.pageYOffset},t.getPageScrollLeft=function(){return window.pageXOffset}):(t.getPageScrollTop=function(){return document.body.scrollTop},t.getPageScrollLeft=function(){return document.body.scrollLeft}),window.getComputedStyle?t.computedStyle=function(e,t){return t?(window.getComputedStyle(e,\"\")||{})[t]||\"\":window.getComputedStyle(e,\"\")||{}}:t.computedStyle=function(e,t){return t?e.currentStyle[t]:e.currentStyle},t.setInnerHtml=function(e,t){var n=e.cloneNode(!1);return n.innerHTML=t,e.parentNode.replaceChild(n,e),n},\"textContent\"in document.documentElement?(t.setInnerText=function(e,t){e.textContent=t},t.getInnerText=function(e){return e.textContent}):(t.setInnerText=function(e,t){e.innerText=t},t.getInnerText=function(e){return e.innerText}),t.getParentWindow=function(e){return e.defaultView||e.parentWindow}}),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\"],function(e,t,n){\"use strict\";e(\"./fixoldbrowsers\");var i=e(\"./oop\"),r=function(){var e,t,n={MODIFIER_KEYS:{16:\"Shift\",17:\"Ctrl\",18:\"Alt\",224:\"Meta\"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,super:8,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:\"Backspace\",9:\"Tab\",13:\"Return\",19:\"Pause\",27:\"Esc\",32:\"Space\",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"Left\",38:\"Up\",39:\"Right\",40:\"Down\",44:\"Print\",45:\"Insert\",46:\"Delete\",96:\"Numpad0\",97:\"Numpad1\",98:\"Numpad2\",99:\"Numpad3\",100:\"Numpad4\",101:\"Numpad5\",102:\"Numpad6\",103:\"Numpad7\",104:\"Numpad8\",105:\"Numpad9\",\"-13\":\"NumpadEnter\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"Numlock\",145:\"Scrolllock\"},PRINTABLE_KEYS:{32:\" \",48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",59:\";\",61:\"=\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",107:\"+\",109:\"-\",110:\".\",186:\";\",187:\"=\",188:\",\",189:\"-\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\",221:\"]\",222:\"'\",111:\"/\",106:\"*\"}};for(t in n.FUNCTION_KEYS)e=n.FUNCTION_KEYS[t].toLowerCase(),n[e]=parseInt(t,10);for(t in n.PRINTABLE_KEYS)e=n.PRINTABLE_KEYS[t].toLowerCase(),n[e]=parseInt(t,10);return i.mixin(n,n.MODIFIER_KEYS),i.mixin(n,n.PRINTABLE_KEYS),i.mixin(n,n.FUNCTION_KEYS),n.enter=n.return,n.escape=n.esc,n.del=n.delete,n[173]=\"-\",function(){for(var e=[\"cmd\",\"ctrl\",\"alt\",\"shift\"],t=Math.pow(2,e.length);t--;)n.KEY_MODS[t]=e.filter(function(e){return t&n.KEY_MODS[e]}).join(\"-\")+\"-\"}(),n.KEY_MODS[0]=\"\",n.KEY_MODS[-1]=\"input-\",n}();i.mixin(t,r),t.keyCodeToString=function(e){var t=r[e];return\"string\"!=typeof t&&(t=String.fromCharCode(e)),t.toLowerCase()}}),ace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";if(t.OS={LINUX:\"LINUX\",MAC:\"MAC\",WINDOWS:\"WINDOWS\"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS},\"object\"==typeof navigator){var i=(navigator.platform.match(/mac|win|linux/i)||[\"other\"])[0].toLowerCase(),r=navigator.userAgent;t.isWin=\"win\"==i,t.isMac=\"mac\"==i,t.isLinux=\"linux\"==i,t.isIE=\"Microsoft Internet Explorer\"==navigator.appName||navigator.appName.indexOf(\"MSAppHost\")>=0?parseFloat((r.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]):parseFloat((r.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&\"Gecko\"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((r.match(/rv:(\\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&\"[object Opera]\"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(r.split(\"WebKit/\")[1])||void 0,t.isChrome=parseFloat(r.split(\" Chrome/\")[1])||void 0,t.isAIR=r.indexOf(\"AdobeAIR\")>=0,t.isIPad=r.indexOf(\"iPad\")>=0,t.isChromeOS=r.indexOf(\" CrOS \")>=0,t.isIOS=/iPad|iPhone|iPod/.test(r)&&!window.MSStream,t.isIOS&&(t.isMac=!0)}}),ace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"],function(e,t,n){\"use strict\";function i(e,t,n){var i=c(t);if(!s.isMac&&a){if(t.getModifierState&&(t.getModifierState(\"OS\")||t.getModifierState(\"Win\"))&&(i|=8),a.altGr){if(3==(3&i))return;a.altGr=0}if(18===n||17===n){var r=\"location\"in t?t.location:t.keyLocation;if(17===n&&1===r)1==a[n]&&(l=t.timeStamp);else if(18===n&&3===i&&2===r){var u=t.timeStamp-l;u<50&&(a.altGr=!0)}}}if(n in o.MODIFIER_KEYS&&(n=-1),8&i&&n>=91&&n<=93&&(n=-1),!i&&13===n){var r=\"location\"in t?t.location:t.keyLocation;if(3===r&&(e(t,i,-n),t.defaultPrevented))return}if(s.isChromeOS&&8&i){if(e(t,i,n),t.defaultPrevented)return;i&=-9}return!!(i||n in o.FUNCTION_KEYS||n in o.PRINTABLE_KEYS)&&e(t,i,n)}function r(){a=Object.create(null)}var o=e(\"./keys\"),s=e(\"./useragent\"),a=null,l=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var i=function(){n.call(e,window.event)};n._wrapper=i,e.attachEvent(\"on\"+t,i)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent(\"on\"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return\"dblclick\"==e.type?0:\"contextmenu\"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,i){function r(e){n&&n(e),i&&i(e),t.removeListener(document,\"mousemove\",n,!0),t.removeListener(document,\"mouseup\",r,!0),t.removeListener(document,\"dragstart\",r,!0)}return t.addListener(document,\"mousemove\",n,!0),t.addListener(document,\"mouseup\",r,!0),t.addListener(document,\"dragstart\",r,!0),r},t.addTouchMoveListener=function(e,n){var i,r;t.addListener(e,\"touchstart\",function(e){var t=e.touches,n=t[0];i=n.clientX,r=n.clientY}),t.addListener(e,\"touchmove\",function(e){var t=e.touches;if(!(t.length>1)){var o=t[0];e.wheelX=i-o.clientX,e.wheelY=r-o.clientY,i=o.clientX,r=o.clientY,n(e)}})},t.addMouseWheelListener=function(e,n){\"onmousewheel\"in e?t.addListener(e,\"mousewheel\",function(e){void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/8,e.wheelY=-e.wheelDeltaY/8):(e.wheelX=0,e.wheelY=-e.wheelDelta/8),n(e)}):\"onwheel\"in e?t.addListener(e,\"wheel\",function(e){switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=.35*e.deltaX||0,e.wheelY=.35*e.deltaY||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}n(e)}):t.addListener(e,\"DOMMouseScroll\",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),n(e)})},t.addMultiMouseDownListener=function(e,n,i,r){function o(e){if(0!==t.getButton(e)?h=0:e.detail>1?++h>4&&(h=1):h=1,s.isIE){var o=Math.abs(e.clientX-l)>5||Math.abs(e.clientY-c)>5;u&&!o||(h=1),u&&clearTimeout(u),u=setTimeout(function(){u=null},n[h-1]||600),1==h&&(l=e.clientX,c=e.clientY)}if(e._clicks=h,i[r](\"mousedown\",e),h>4)h=0;else if(h>1)return i[r](d[h],e)}function a(e){h=2,u&&clearTimeout(u),u=setTimeout(function(){u=null},n[h-1]||600),i[r](\"mousedown\",e),i[r](d[h],e)}var l,c,u,h=0,d={2:\"dblclick\",3:\"tripleclick\",4:\"quadclick\"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,\"mousedown\",o),s.isOldIE&&t.addListener(e,\"dblclick\",a)})};var c=!s.isMac||!s.isOpera||\"KeyboardEvent\"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};if(t.getModifierString=function(e){return o.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,n){var o=t.addListener;if(s.isOldGecko||s.isOpera&&!(\"KeyboardEvent\"in window)){var l=null;o(e,\"keydown\",function(e){l=e.keyCode}),o(e,\"keypress\",function(e){return i(n,e,l)})}else{var c=null;o(e,\"keydown\",function(e){a[e.keyCode]=(a[e.keyCode]||0)+1;var t=i(n,e,e.keyCode);return c=e.defaultPrevented,t}),o(e,\"keypress\",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),o(e,\"keyup\",function(e){a[e.keyCode]=null}),a||(r(),o(window,\"focus\",r))}},\"object\"==typeof window&&window.postMessage&&!s.isOldIE){t.nextTick=function(e,n){n=n||window;t.addListener(n,\"message\",function i(r){\"zero-timeout-message-1\"==r.data&&(t.stopPropagation(r),t.removeListener(n,\"message\",i),e())}),n.postMessage(\"zero-timeout-message-1\",\"*\")}}t.nextFrame=\"object\"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split(\"\").reverse().join(\"\")},t.stringRepeat=function(e,t){for(var n=\"\";t>0;)1&t&&(n+=e),(t>>=1)&&(e+=e);return n};var i=/^\\s\\s*/,r=/\\s\\s*$/;t.stringTrimLeft=function(e){return e.replace(i,\"\")},t.stringTrimRight=function(e){return e.replace(r,\"\")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){for(var t=[],n=0,i=e.length;n<i;n++)e[n]&&\"object\"==typeof e[n]?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function e(t){if(\"object\"!=typeof t||!t)return t;var n;if(Array.isArray(t)){n=[];for(var i=0;i<t.length;i++)n[i]=e(t[i]);return n}if(\"[object Object]\"!==Object.prototype.toString.call(t))return t;n={};for(var i in t)n[i]=e(t[i]);return n},t.arrayToMap=function(e){for(var t={},n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},t.escapeHTML=function(e){return e.replace(/&/g,\"&#38;\").replace(/\"/g,\"&#34;\").replace(/'/g,\"&#39;\").replace(/</g,\"&#60;\")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},i=function(e){return i.cancel(),t=setTimeout(n,e||0),i};return i.schedule=i,i.call=function(){return this.cancel(),e(),i},i.cancel=function(){return clearTimeout(t),t=null,i},i.isPending=function(){return t},i},t.delayedCall=function(e,t){var n=null,i=function(){n=null,e()},r=function(e){null==n&&(n=setTimeout(i,e||t))};return r.delay=function(e){n&&clearTimeout(n),n=setTimeout(i,e||t)},r.schedule=r,r.call=function(){this.cancel(),e()},r.cancel=function(){n&&clearTimeout(n),n=null},r.isPending=function(){return n},r}}),ace.define(\"ace/keyboard/textinput_ios\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/keys\"],function(e,t,n){\"use strict\";var i=e(\"../lib/event\"),r=e(\"../lib/useragent\"),o=e(\"../lib/dom\"),s=e(\"../lib/lang\"),a=e(\"../lib/keys\"),l=a.KEY_MODS,c=r.isChrome<18,u=r.isIE,h=function(e,t){function n(e){if(!y){if(y=!0,S)t=0,n=e?0:f.value.length-1;else var t=4,n=5;try{f.setSelectionRange(t,n)}catch(e){}y=!1}}function h(){y||(f.value=p,r.isWebKit&&E.schedule())}function d(){clearTimeout(j),j=setTimeout(function(){b&&(f.style.cssText=b,b=\"\"),null==t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}var f=o.createElement(\"textarea\");f.className=r.isIOS?\"ace_text-input ace_text-input-ios\":\"ace_text-input\",r.isTouchPad&&f.setAttribute(\"x-palm-disable-auto-cap\",!0),f.setAttribute(\"wrap\",\"off\"),f.setAttribute(\"autocorrect\",\"off\"),f.setAttribute(\"autocapitalize\",\"off\"),f.setAttribute(\"spellcheck\",!1),f.style.opacity=\"0\",e.insertBefore(f,e.firstChild);var p=\"\\n aaaa a\\n\",m=!1,g=!1,v=!1,y=!1,b=\"\",w=!0;try{var C=document.activeElement===f}catch(e){}i.addListener(f,\"blur\",function(e){t.onBlur(e),C=!1}),i.addListener(f,\"focus\",function(e){C=!0,t.onFocus(e),n()}),this.focus=function(){if(b)return f.focus();f.style.position=\"fixed\",f.focus()},this.blur=function(){f.blur()},this.isFocused=function(){return C};var A=s.delayedCall(function(){C&&n(w)}),E=s.delayedCall(function(){y||(f.value=p,C&&n())});r.isWebKit||t.addEventListener(\"changeSelection\",function(){t.selection.isEmpty()!=w&&(w=!w,A.schedule())}),h(),C&&t.onFocus();var x=function(e){return 0===e.selectionStart&&e.selectionEnd===e.value.length},F=function(e){x(f)?(t.selectAll(),n()):S&&n(t.selection.isEmpty())},S=null;this.setInputHandler=function(e){S=e},this.getInputHandler=function(){return S};var $=!1,k=function(e){4===f.selectionStart&&5===f.selectionEnd||(S&&(e=S(e),S=null),v?(n(),e&&t.onPaste(e),v=!1):e==p.substr(0)&&4===f.selectionStart?$?t.execCommand(\"del\",{source:\"ace\"}):t.execCommand(\"backspace\",{source:\"ace\"}):m||(e.substring(0,9)==p&&e.length>p.length?e=e.substr(9):e.substr(0,4)==p.substr(0,4)?e=e.substr(4,e.length-p.length+1):e.charAt(e.length-1)==p.charAt(0)&&(e=e.slice(0,-1)),e==p.charAt(0)||e.charAt(e.length-1)==p.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),m&&(m=!1),$&&($=!1))},_=function(e){if(!y){var t=f.value;k(t),h()}},B=function(e,t,n){var i=e.clipboardData||window.clipboardData;if(i&&!c){var r=u||n?\"Text\":\"text/plain\";try{return t?!1!==i.setData(r,t):i.getData(r)}catch(e){if(!n)return B(e,t,!0)}}},D=function(e,o){var s=t.getCopyText();if(!s)return i.preventDefault(e);B(e,s)?(r.isIOS&&(g=o,f.value=\"\\n aa\"+s+\"a a\\n\",f.setSelectionRange(4,4+s.length),m={value:s}),o?t.onCut():t.onCopy(),r.isIOS||i.preventDefault(e)):(m=!0,f.value=s,f.select(),setTimeout(function(){m=!1,h(),n(),o?t.onCut():t.onCopy()}))},T=function(e){D(e,!0)},L=function(e){D(e,!1)},O=function(e){var o=B(e);\"string\"==typeof o?(o&&t.onPaste(o,e),r.isIE&&setTimeout(n),i.preventDefault(e)):(f.value=\"\",v=!0)};i.addCommandKeyListener(f,t.onCommandKey.bind(t)),i.addListener(f,\"select\",F),i.addListener(f,\"input\",_),i.addListener(f,\"cut\",T),i.addListener(f,\"copy\",L),i.addListener(f,\"paste\",O);var R=function(e){y||!t.onCompositionStart||t.$readOnly||(y={},y.canUndo=t.session.$undoManager,t.onCompositionStart(),setTimeout(P,0),t.on(\"mousedown\",M),y.canUndo&&!t.selection.isEmpty()&&(t.insert(\"\"),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup())},P=function(){if(y&&t.onCompositionUpdate&&!t.$readOnly){var e=f.value.replace(/\\x01/g,\"\");if(y.lastValue!==e&&(t.onCompositionUpdate(e),y.lastValue&&t.undo(),y.canUndo&&(y.lastValue=e),y.lastValue)){var n=t.selection.getRange();t.insert(y.lastValue),t.session.markUndoGroup(),y.range=t.selection.getRange(),t.selection.setRange(n),t.selection.clearSelection()}}},M=function(e){if(t.onCompositionEnd&&!t.$readOnly){var n=y;y=!1;var i=setTimeout(function(){i=null;var e=f.value.replace(/\\x01/g,\"\");y||(e==n.lastValue?h():!n.lastValue&&e&&(h(),k(e)))});S=function(e){return i&&clearTimeout(i),(e=e.replace(/\\x01/g,\"\"))==n.lastValue?\"\":(n.lastValue&&i&&t.undo(),e)},t.onCompositionEnd(),t.removeListener(\"mousedown\",M),\"compositionend\"==e.type&&n.range&&t.selection.setRange(n.range);(!!r.isChrome&&r.isChrome>=53||!!r.isWebKit&&r.isWebKit>=603)&&_()}},I=s.delayedCall(P,50);i.addListener(f,\"compositionstart\",R),r.isGecko?i.addListener(f,\"text\",function(){I.schedule()}):(i.addListener(f,\"keyup\",function(){I.schedule()}),i.addListener(f,\"keydown\",function(){I.schedule()})),i.addListener(f,\"compositionend\",M),this.getElement=function(){return f},this.setReadOnly=function(e){f.readOnly=e},this.onContextMenu=function(e){$=!0,n(t.selection.isEmpty()),t._emit(\"nativecontextmenu\",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,n){b||(b=f.style.cssText),f.style.cssText=(n?\"z-index:100000;\":\"\")+\"height:\"+f.style.height+\";\"+(r.isIE?\"opacity:0.1;\":\"\");var s=t.container.getBoundingClientRect(),a=o.computedStyle(t.container),l=s.top+(parseInt(a.borderTopWidth)||0),c=s.left+(parseInt(s.borderLeftWidth)||0),u=s.bottom-l-f.clientHeight-2,h=function(e){f.style.left=e.clientX-c-2+\"px\",f.style.top=Math.min(e.clientY-l-2,u)+\"px\"};h(e),\"mousedown\"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(j),r.isWin&&i.capture(t.container,h,d))},this.onContextMenuClose=d;var j,N=function(e){t.textInput.onContextMenu(e),d()};if(i.addListener(f,\"mouseup\",N),i.addListener(f,\"mousedown\",function(e){e.preventDefault(),d()}),i.addListener(t.renderer.scroller,\"contextmenu\",N),i.addListener(f,\"contextmenu\",N),r.isIOS){var H=null,V=!1;e.addEventListener(\"keydown\",function(e){H&&clearTimeout(H),V=!0}),e.addEventListener(\"keyup\",function(e){H=setTimeout(function(){V=!1},100)});var W=function(e){if(document.activeElement===f&&!V){if(g)return setTimeout(function(){g=!1},100);var n=f.selectionStart,i=f.selectionEnd;if(f.setSelectionRange(4,5),n==i)switch(n){case 0:t.onCommandKey(null,0,a.up);break;case 1:t.onCommandKey(null,0,a.home);break;case 2:t.onCommandKey(null,l.option,a.left);break;case 4:t.onCommandKey(null,0,a.left);break;case 5:t.onCommandKey(null,0,a.right);break;case 7:t.onCommandKey(null,l.option,a.right);break;case 8:t.onCommandKey(null,0,a.end);break;case 9:t.onCommandKey(null,0,a.down)}else{switch(i){case 6:t.onCommandKey(null,l.shift,a.right);break;case 7:t.onCommandKey(null,l.shift|l.option,a.right);break;case 8:t.onCommandKey(null,l.shift,a.end);break;case 9:t.onCommandKey(null,l.shift,a.down)}switch(n){case 0:t.onCommandKey(null,l.shift,a.up);break;case 1:t.onCommandKey(null,l.shift,a.home);break;case 2:t.onCommandKey(null,l.shift|l.option,a.left);break;case 3:t.onCommandKey(null,l.shift,a.left)}}}};document.addEventListener(\"selectionchange\",W),t.on(\"destroy\",function(){document.removeEventListener(\"selectionchange\",W)})}};t.TextInput=h}),ace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/keyboard/textinput_ios\"],function(e,t,n){\"use strict\";var i=e(\"../lib/event\"),r=e(\"../lib/useragent\"),o=e(\"../lib/dom\"),s=e(\"../lib/lang\"),a=r.isChrome<18,l=r.isIE,c=e(\"./textinput_ios\").TextInput,u=function(e,t){function n(e){if(!g){if(g=!0,x)var t=0,n=e?0:d.value.length-1;else var t=e?2:1,n=2;try{d.setSelectionRange(t,n)}catch(e){}g=!1}}function u(){g||(d.value=f,r.isWebKit&&C.schedule())}function h(){clearTimeout(M),M=setTimeout(function(){v&&(d.style.cssText=v,v=\"\"),null==t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}if(r.isIOS)return c.call(this,e,t);var d=o.createElement(\"textarea\");d.className=\"ace_text-input\",d.setAttribute(\"wrap\",\"off\"),d.setAttribute(\"autocorrect\",\"off\"),d.setAttribute(\"autocapitalize\",\"off\"),d.setAttribute(\"spellcheck\",!1),d.style.opacity=\"0\",e.insertBefore(d,e.firstChild);var f=\"\\u2028\\u2028\",p=!1,m=!1,g=!1,v=\"\",y=!0;try{var b=document.activeElement===d}catch(e){}i.addListener(d,\"blur\",function(e){t.onBlur(e),b=!1}),i.addListener(d,\"focus\",function(e){b=!0,t.onFocus(e),n()}),this.focus=function(){if(v)return d.focus();var e=d.style.top;d.style.position=\"fixed\",d.style.top=\"0px\",d.focus(),setTimeout(function(){d.style.position=\"\",\"0px\"==d.style.top&&(d.style.top=e)},0)},this.blur=function(){d.blur()},this.isFocused=function(){return b};var w=s.delayedCall(function(){b&&n(y)}),C=s.delayedCall(function(){g||(d.value=f,b&&n())});r.isWebKit||t.addEventListener(\"changeSelection\",function(){t.selection.isEmpty()!=y&&(y=!y,w.schedule())}),u(),b&&t.onFocus();var A=function(e){return 0===e.selectionStart&&e.selectionEnd===e.value.length},E=function(e){p?p=!1:A(d)?(t.selectAll(),n()):x&&n(t.selection.isEmpty())},x=null;this.setInputHandler=function(e){x=e},this.getInputHandler=function(){return x};var F=!1,S=function(e){x&&(e=x(e),x=null),m?(n(),e&&t.onPaste(e),m=!1):e==f.charAt(0)?F?t.execCommand(\"del\",{source:\"ace\"}):t.execCommand(\"backspace\",{source:\"ace\"}):(e.substring(0,2)==f?e=e.substr(2):e.charAt(0)==f.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==f.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==f.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),F&&(F=!1)},$=function(e){if(!g){var t=d.value;S(t),u()}},k=function(e,t,n){var i=e.clipboardData||window.clipboardData;if(i&&!a){var r=l||n?\"Text\":\"text/plain\";try{return t?!1!==i.setData(r,t):i.getData(r)}catch(e){if(!n)return k(e,t,!0)}}},_=function(e,r){var o=t.getCopyText();if(!o)return i.preventDefault(e);k(e,o)?(r?t.onCut():t.onCopy(),i.preventDefault(e)):(p=!0,d.value=o,d.select(),setTimeout(function(){p=!1,u(),n(),r?t.onCut():t.onCopy()}))},B=function(e){_(e,!0)},D=function(e){_(e,!1)},T=function(e){var o=k(e);\"string\"==typeof o?(o&&t.onPaste(o,e),r.isIE&&setTimeout(n),i.preventDefault(e)):(d.value=\"\",m=!0)};i.addCommandKeyListener(d,t.onCommandKey.bind(t)),i.addListener(d,\"select\",E),i.addListener(d,\"input\",$),i.addListener(d,\"cut\",B),i.addListener(d,\"copy\",D),i.addListener(d,\"paste\",T),\"oncut\"in d&&\"oncopy\"in d&&\"onpaste\"in d||i.addListener(e,\"keydown\",function(e){if((!r.isMac||e.metaKey)&&e.ctrlKey)switch(e.keyCode){case 67:D(e);break;case 86:T(e);break;case 88:B(e)}});var L=function(e){g||!t.onCompositionStart||t.$readOnly||(g={},g.canUndo=t.session.$undoManager,t.onCompositionStart(),setTimeout(O,0),t.on(\"mousedown\",R),g.canUndo&&!t.selection.isEmpty()&&(t.insert(\"\"),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup())},O=function(){if(g&&t.onCompositionUpdate&&!t.$readOnly){var e=d.value.replace(/\\u2028/g,\"\");if(g.lastValue!==e&&(t.onCompositionUpdate(e),g.lastValue&&t.undo(),g.canUndo&&(g.lastValue=e),g.lastValue)){var n=t.selection.getRange();t.insert(g.lastValue),t.session.markUndoGroup(),g.range=t.selection.getRange(),t.selection.setRange(n),t.selection.clearSelection()}}},R=function(e){if(t.onCompositionEnd&&!t.$readOnly){var n=g;g=!1;var i=setTimeout(function(){i=null;var e=d.value.replace(/\\u2028/g,\"\");g||(e==n.lastValue?u():!n.lastValue&&e&&(u(),S(e)))});x=function(e){return i&&clearTimeout(i),(e=e.replace(/\\u2028/g,\"\"))==n.lastValue?\"\":(n.lastValue&&i&&t.undo(),e)},t.onCompositionEnd(),t.removeListener(\"mousedown\",R),\"compositionend\"==e.type&&n.range&&t.selection.setRange(n.range);(!!r.isChrome&&r.isChrome>=53||!!r.isWebKit&&r.isWebKit>=603)&&$()}},P=s.delayedCall(O,50);i.addListener(d,\"compositionstart\",L),r.isGecko?i.addListener(d,\"text\",function(){P.schedule()}):(i.addListener(d,\"keyup\",function(){P.schedule()}),i.addListener(d,\"keydown\",function(){P.schedule()})),i.addListener(d,\"compositionend\",R),this.getElement=function(){return d},this.setReadOnly=function(e){d.readOnly=e},this.onContextMenu=function(e){F=!0,n(t.selection.isEmpty()),t._emit(\"nativecontextmenu\",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,n){v||(v=d.style.cssText),d.style.cssText=(n?\"z-index:100000;\":\"\")+\"height:\"+d.style.height+\";\"+(r.isIE?\"opacity:0.1;\":\"\");var s=t.container.getBoundingClientRect(),a=o.computedStyle(t.container),l=s.top+(parseInt(a.borderTopWidth)||0),c=s.left+(parseInt(s.borderLeftWidth)||0),u=s.bottom-l-d.clientHeight-2,f=function(e){d.style.left=e.clientX-c-2+\"px\",d.style.top=Math.min(e.clientY-l-2,u)+\"px\"};f(e),\"mousedown\"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(M),r.isWin&&i.capture(t.container,f,h))},this.onContextMenuClose=h;var M,I=function(e){t.textInput.onContextMenu(e),h()};i.addListener(d,\"mouseup\",I),i.addListener(d,\"mousedown\",function(e){e.preventDefault(),h()}),i.addListener(t.renderer.scroller,\"contextmenu\",I),i.addListener(d,\"contextmenu\",I)};t.TextInput=u}),ace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"],function(e,t,n){\"use strict\";function i(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler(\"mousedown\",this.onMouseDown.bind(e)),t.setDefaultHandler(\"dblclick\",this.onDoubleClick.bind(e)),t.setDefaultHandler(\"tripleclick\",this.onTripleClick.bind(e)),t.setDefaultHandler(\"quadclick\",this.onQuadClick.bind(e)),t.setDefaultHandler(\"mousewheel\",this.onMouseWheel.bind(e)),t.setDefaultHandler(\"touchmove\",this.onTouchMove.bind(e)),[\"select\",\"startSelect\",\"selectEnd\",\"selectAllEnd\",\"selectByWordsEnd\",\"selectByLinesEnd\",\"dragWait\",\"dragWaitEnd\",\"focusWait\"].forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,\"getLineRange\"),e.selectByWords=this.extendSelectionBy.bind(e,\"getWordRange\")}function r(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}function o(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)var n=2*t.row-e.start.row-e.end.row;else var n=t.column-4;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var s=(e(\"../lib/dom\"),e(\"../lib/event\"),e(\"../lib/useragent\"));(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var i=this.editor,r=e.getButton();if(0!==r){var o=i.getSelectionRange(),a=o.isEmpty();return i.$blockScrolling++,(a||1==r)&&i.selection.moveToPosition(n),i.$blockScrolling--,void(2==r&&(i.textInput.onContextMenu(e.domEvent),s.isMozilla||e.preventDefault()))}return this.mousedownEvent.time=Date.now(),!t||i.isFocused()||(i.focus(),!this.$focusTimout||this.$clickSelection||i.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()):(this.setState(\"focusWait\"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle(\"ace_selecting\"),this.setState(\"select\"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var i=this.$clickSelection.comparePoint(n);if(-1==i)e=this.$clickSelection.end;else if(1==i)e=this.$clickSelection.start;else{var r=o(this.$clickSelection,n);n=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,i=n.renderer.screenToTextCoordinates(this.x,this.y),r=n.selection[e](i.row,i.column);if(n.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==s&&a<=0)t=this.$clickSelection.end,r.end.row==i.row&&r.end.column==i.column||(i=r.start);else if(1==a&&s>=0)t=this.$clickSelection.start,r.start.row==i.row&&r.start.column==i.column||(i=r.end);else if(-1==s&&1==a)i=r.end,t=r.start;else{var l=o(this.$clickSelection,i);i=l.cursor,t=l.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(i),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle(\"ace_selecting\"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>0||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,i=n.session,r=i.getBracketRange(t);r?(r.isEmpty()&&(r.start.column--,r.end.column++),this.setState(\"select\")):(r=n.selection.getWordRange(t.row,t.column),this.setState(\"selectByWords\")),this.$clickSelection=r,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState(\"selectByLines\");var i=n.getSelectionRange();i.isMultiLine()&&i.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(i.start.row),this.$clickSelection.end=n.selection.getLineRange(i.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState(\"selectAll\")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,i=e.domEvent.timeStamp,r=i-n.t,o=e.wheelX/r,s=e.wheelY/r;r<250&&(o=(o+n.vx)/2,s=(s+n.vy)/2);var a=Math.abs(o/s),l=!1;if(a>=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(l=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(l=!0),l)n.allowed=i;else if(i-n.allowed<250){var c=Math.abs(o)<=1.1*Math.abs(n.vx)&&Math.abs(s)<=1.1*Math.abs(n.vy);c?(l=!0,n.allowed=i):n.allowed=0}return n.t=i,n.vx=o,n.vy=s,l?(t.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){this.editor._emit(\"mousewheel\",e)}}).call(i.prototype),t.DefaultHandlers=i}),ace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\"],function(e,t,n){\"use strict\";function i(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=(e(\"./lib/oop\"),e(\"./lib/dom\"));(function(){this.$init=function(){return this.$element=r.createElement(\"div\"),this.$element.className=\"ace_tooltip\",this.$element.style.display=\"none\",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){r.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+\"px\",this.getElement().style.top=t+\"px\"},this.setClassName=function(e){r.addCssClass(this.getElement(),e)},this.show=function(e,t,n){null!=e&&this.setText(e),null!=t&&null!=n&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display=\"block\",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display=\"none\",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth},this.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)}}).call(i.prototype),t.Tooltip=i}),ace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event\",\"ace/tooltip\"],function(e,t,n){\"use strict\";function i(e){function t(){var t=h.getDocumentPosition().row,r=l.$annotations[t];if(!r)return n();if(t==s.session.getLength()){var o=s.renderer.pixelToScreenCoordinates(0,h.y).row,a=h.$pos;if(o>s.session.documentToScreenRow(a.row,a.column))return n()}if(d!=r)if(d=r.text.join(\"<br/>\"),c.setHtml(d),c.show(),s._signal(\"showGutterTooltip\",c),s.on(\"mousewheel\",n),e.$tooltipFollowsMouse)i(h);else{var u=h.domEvent.target,f=u.getBoundingClientRect(),p=c.getElement().style;p.left=f.right+\"px\",p.top=f.bottom+\"px\"}}function n(){u&&(u=clearTimeout(u)),d&&(c.hide(),d=null,s._signal(\"hideGutterTooltip\",c),s.removeEventListener(\"mousewheel\",n))}function i(e){c.setPosition(e.x,e.y)}var s=e.editor,l=s.renderer.$gutterLayer,c=new r(s.container);e.editor.setDefaultHandler(\"guttermousedown\",function(t){if(s.isFocused()&&0==t.getButton()){if(\"foldWidgets\"!=l.getRegion(t)){var n=t.getDocumentPosition().row,i=s.session.selection;if(t.getShiftKey())i.selectTo(n,0);else{if(2==t.domEvent.detail)return s.selectAll(),t.preventDefault();e.$clickSelection=s.selection.getLineRange(n)}return e.setState(\"selectByLines\"),e.captureMouse(t),t.preventDefault()}}});var u,h,d;e.editor.setDefaultHandler(\"guttermousemove\",function(r){var s=r.domEvent.target||r.domEvent.srcElement;if(o.hasCssClass(s,\"ace_fold-widget\"))return n();d&&e.$tooltipFollowsMouse&&i(r),h=r,u||(u=setTimeout(function(){u=null,h&&!e.isMousePressed?t():n()},50))}),a.addListener(s.renderer.$gutter,\"mouseout\",function(e){h=null,d&&!u&&(u=setTimeout(function(){u=null,n()},50))}),s.on(\"changeSession\",n)}function r(e){l.call(this,e)}var o=e(\"../lib/dom\"),s=e(\"../lib/oop\"),a=e(\"../lib/event\"),l=e(\"../tooltip\").Tooltip;s.inherits(r,l),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),o=this.getHeight();e+=15,t+=15,e+r>n&&(e-=e+r-n),t+o>i&&(t-=20+o),l.prototype.setPosition.call(this,e,t)}}.call(r.prototype),t.GutterHandler=i}),ace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"],function(e,t,n){\"use strict\";var i=e(\"../lib/event\"),r=e(\"../lib/useragent\"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return i.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"],function(e,t,n){\"use strict\";function i(e){function t(e,t){var n=Date.now(),i=!t||e.row!=t.row,o=!t||e.column!=t.column;if(!$||i||o)g.$blockScrolling+=1,g.moveCursorToPosition(e),g.$blockScrolling-=1,$=n,k={x:b,y:w};else{r(k.x,k.y,b,w)>u?$=null:n-$>=c&&(g.renderer.scrollCursorIntoView(),$=null)}}function n(e,t){var n=Date.now(),i=g.renderer.layerConfig.lineHeight,r=g.renderer.layerConfig.characterWidth,o=g.renderer.scroller.getBoundingClientRect(),s={x:{left:b-o.left,right:o.right-b},y:{top:w-o.top,bottom:o.bottom-w}},a=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),u={row:e.row,column:e.column};a/r<=2&&(u.column+=s.x.left<s.x.right?-3:2),c/i<=1&&(u.row+=s.y.top<s.y.bottom?-1:1);var h=e.row!=u.row,d=e.column!=u.column,f=!t||e.row!=t.row;h||d&&!f?S?n-S>=l&&g.renderer.scrollCursorIntoView(u):S=n:S=null}function i(){var e=E;E=g.renderer.screenToTextCoordinates(b,w),t(E,e),n(E,e)}function h(){A=g.selection.toOrientedRange(),y=g.session.addMarker(A,\"ace_selection\",g.getSelectionStyle()),g.clearSelection(),g.isFocused()&&g.renderer.$cursorLayer.setBlinking(!1),clearInterval(C),i(),C=setInterval(i,20),B=0,s.addListener(document,\"mousemove\",f)}function d(){clearInterval(C),g.session.removeMarker(y),y=null,g.$blockScrolling+=1,g.selection.fromOrientedRange(A),g.$blockScrolling-=1,g.isFocused()&&!F&&g.renderer.$cursorLayer.setBlinking(!g.getReadOnly()),A=null,E=null,B=0,S=null,$=null,s.removeListener(document,\"mousemove\",f)}function f(){null==D&&(D=setTimeout(function(){null!=D&&y&&d()},20))}function p(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return\"text/plain\"==e||\"Text\"==e})}function m(e){var t=[\"copy\",\"copymove\",\"all\",\"uninitialized\"],n=[\"move\",\"copymove\",\"linkmove\",\"all\",\"uninitialized\"],i=a.isMac?e.altKey:e.ctrlKey,r=\"uninitialized\";try{r=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o=\"none\";return i&&t.indexOf(r)>=0?o=\"copy\":n.indexOf(r)>=0?o=\"move\":t.indexOf(r)>=0&&(o=\"copy\"),o}var g=e.editor,v=o.createElement(\"img\");v.src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\",a.isOpera&&(v.style.cssText=\"width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;\"),[\"dragWait\",\"dragWaitEnd\",\"startDrag\",\"dragReadyEnd\",\"onMouseDrag\"].forEach(function(t){e[t]=this[t]},this),g.addEventListener(\"mousedown\",this.onMouseDown.bind(e));var y,b,w,C,A,E,x,F,S,$,k,_=g.container,B=0;this.onDragStart=function(e){if(this.cancelDrag||!_.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}A=g.getSelectionRange();var n=e.dataTransfer;n.effectAllowed=g.getReadOnly()?\"copy\":\"copyMove\",a.isOpera&&(g.container.appendChild(v),v.scrollTop=0),n.setDragImage&&n.setDragImage(v,0,0),a.isOpera&&g.container.removeChild(v),n.clearData(),n.setData(\"Text\",g.session.getTextRange()),F=!0,this.setState(\"drag\")},this.onDragEnd=function(e){if(_.draggable=!1,F=!1,this.setState(null),!g.getReadOnly()){var t=e.dataTransfer.dropEffect;x||\"move\"!=t||g.session.remove(g.getSelectionRange()),g.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle(\"ace_dragging\"),this.editor.renderer.setCursorStyle(\"\")},this.onDragEnter=function(e){if(!g.getReadOnly()&&p(e.dataTransfer))return b=e.clientX,w=e.clientY,y||h(),B++,e.dataTransfer.dropEffect=x=m(e),s.preventDefault(e)},this.onDragOver=function(e){if(!g.getReadOnly()&&p(e.dataTransfer))return b=e.clientX,w=e.clientY,y||(h(),B++),null!==D&&(D=null),e.dataTransfer.dropEffect=x=m(e),s.preventDefault(e)},this.onDragLeave=function(e){if(--B<=0&&y)return d(),x=null,s.preventDefault(e)},this.onDrop=function(e){if(E){var t=e.dataTransfer;if(F)switch(x){case\"move\":A=A.contains(E.row,E.column)?{start:E,end:E}:g.moveText(A,E);break;case\"copy\":A=g.moveText(A,E,!0)}else{var n=t.getData(\"Text\");A={start:E,end:g.session.insert(E,n)},g.focus(),x=null}return d(),s.preventDefault(e)}},s.addListener(_,\"dragstart\",this.onDragStart.bind(e)),s.addListener(_,\"dragend\",this.onDragEnd.bind(e)),s.addListener(_,\"dragenter\",this.onDragEnter.bind(e)),s.addListener(_,\"dragover\",this.onDragOver.bind(e)),s.addListener(_,\"dragleave\",this.onDragLeave.bind(e)),s.addListener(_,\"drop\",this.onDrop.bind(e));var D=null}function r(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}var o=e(\"../lib/dom\"),s=e(\"../lib/event\"),a=e(\"../lib/useragent\"),l=200,c=200,u=5;(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle(\"ace_dragging\"),this.editor.renderer.setCursorStyle(\"\"),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor;e.container.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle(\"ace_dragging\");var t=a.isWin?\"default\":\"move\";e.renderer.setCursorStyle(t),this.setState(\"dragReady\")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&\"dragReady\"==this.state){var n=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(\"dragWait\"===this.state){var n=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),i=e.getButton();if(1===(e.domEvent.detail||1)&&0===i&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var r=e.domEvent.target||e.domEvent.srcElement;if(\"unselectable\"in r&&(r.unselectable=\"on\"),t.getDragDelay()){if(a.isWebKit){this.cancelDrag=!0;t.container.draggable=!0}this.setState(\"dragWait\")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(i.prototype),t.DragdropHandler=i}),ace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){\"use strict\";var i=e(\"./dom\");t.get=function(e,t){var n=new XMLHttpRequest;n.open(\"GET\",e,!0),n.onreadystatechange=function(){4===n.readyState&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=i.getDocumentHead(),r=document.createElement(\"script\");r.src=e,n.appendChild(r),r.onload=r.onreadystatechange=function(e,n){!n&&r.readyState&&\"loaded\"!=r.readyState&&\"complete\"!=r.readyState||(r=r.onload=r.onreadystatechange=null,n||t())}},t.qualifyURL=function(e){var t=document.createElement(\"a\");return t.href=e,t.href}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";var i={},r=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],i=this._defaultHandlers[e];if(n.length||i){\"object\"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=r),t.preventDefault||(t.preventDefault=o),n=n.slice();for(var s=0;s<n.length&&(n[s](t,this),!t.propagationStopped);s++);return i&&!t.defaultPrevented?i(t,this):void 0}},i._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(n){n=n.slice();for(var i=0;i<n.length;i++)n[i](t,this)}},i.once=function(e,t){var n=this;t&&this.addEventListener(e,function i(){n.removeEventListener(e,i),t.apply(null,arguments)})},i.setDefaultHandler=function(e,t){var n=this._defaultHandlers;if(n||(n=this._defaultHandlers={_disabled_:{}}),n[e]){var i=n[e],r=n._disabled_[e];r||(n._disabled_[e]=r=[]),r.push(i);var o=r.indexOf(t);-1!=o&&r.splice(o,1)}n[e]=t},i.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(n){var i=n._disabled_[e];if(n[e]==t){n[e];i&&this.setDefaultHandler(e,i.pop())}else if(i){var r=i.indexOf(t);-1!=r&&i.splice(r,1)}}},i.on=i.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var i=this._eventRegistry[e];return i||(i=this._eventRegistry[e]=[]),-1==i.indexOf(t)&&i[n?\"unshift\":\"push\"](t),t},i.off=i.removeListener=i.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(n){var i=n.indexOf(t);-1!==i&&n.splice(i,1)}},i.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=i}),ace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(e,t,n){\"no use strict\";function i(e){\"undefined\"!=typeof console&&console.warn&&console.warn.apply(console,arguments)}function r(e,t){var n=new Error(e);n.data=t,\"object\"==typeof console&&console.error&&console.error(n),setTimeout(function(){throw n})}var o=e(\"./oop\"),s=e(\"./event_emitter\").EventEmitter,a={setOptions:function(e){Object.keys(e).forEach(function(t){this.setOption(t,e[t])},this)},getOptions:function(e){var t={};return e?Array.isArray(e)||(t=e,e=Object.keys(t)):e=Object.keys(this.$options),e.forEach(function(e){t[e]=this.getOption(e)},this),t},setOption:function(e,t){if(this[\"$\"+e]!==t){var n=this.$options[e];if(!n)return i('misspelled option \"'+e+'\"');if(n.forwardTo)return this[n.forwardTo]&&this[n.forwardTo].setOption(e,t);n.handlesSet||(this[\"$\"+e]=t),n&&n.set&&n.set.call(this,t)}},getOption:function(e){var t=this.$options[e];return t?t.forwardTo?this[t.forwardTo]&&this[t.forwardTo].getOption(e):t&&t.get?t.get.call(this):this[\"$\"+e]:i('misspelled option \"'+e+'\"')}},l=function(){this.$defaultOptions={}};(function(){o.implement(this,s),this.defineOptions=function(e,t,n){return e.$options||(this.$defaultOptions[t]=e.$options={}),Object.keys(n).forEach(function(t){var i=n[t];\"string\"==typeof i&&(i={forwardTo:i}),i.name||(i.name=t),e.$options[i.name]=i,\"initialValue\"in i&&(e[\"$\"+i.name]=i.initialValue)}),o.implement(e,a),this},this.resetOptions=function(e){Object.keys(e.$options).forEach(function(t){var n=e.$options[t];\"value\"in n&&e.setOption(t,n.value)})},this.setDefaultValue=function(e,t,n){var i=this.$defaultOptions[e]||(this.$defaultOptions[e]={});i[t]&&(i.forwardTo?this.setDefaultValue(i.forwardTo,t,n):i[t].value=n)},this.setDefaultValues=function(e,t){Object.keys(t).forEach(function(n){this.setDefaultValue(e,n,t[n])},this)},this.warn=i,this.reportError=r}).call(l.prototype),t.AppConfig=l}),ace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/app_config\"],function(e,t,i){\"no use strict\";function r(r){if(c&&c.document){u.packaged=r||e.packaged||i.packaged||c.define&&n(\"LGuY\").packaged;for(var s={},a=\"\",l=document.currentScript||document._currentScript,h=l&&l.ownerDocument||document,d=h.getElementsByTagName(\"script\"),f=0;f<d.length;f++){var p=d[f],m=p.src||p.getAttribute(\"src\");if(m){for(var g=p.attributes,v=0,y=g.length;v<y;v++){var b=g[v];0===b.name.indexOf(\"data-ace-\")&&(s[o(b.name.replace(/^data-ace-/,\"\"))]=b.value)}var w=m.match(/^(.*)\\/ace(\\-\\w+)?\\.js(\\?|$)/);w&&(a=w[1])}}a&&(s.base=s.base||a,s.packaged=!0),s.basePath=s.base,s.workerPath=s.workerPath||s.base,s.modePath=s.modePath||s.base,s.themePath=s.themePath||s.base,delete s.base;for(var C in s)void 0!==s[C]&&t.set(C,s[C])}}function o(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var s=e(\"./lib/lang\"),a=(e(\"./lib/oop\"),e(\"./lib/net\")),l=e(\"./lib/app_config\").AppConfig;i.exports=t=new l;var c=function(){return this||\"undefined\"!=typeof window&&window}(),u={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:\"\",suffix:\".js\",$moduleUrls:{}};t.get=function(e){if(!u.hasOwnProperty(e))throw new Error(\"Unknown config key: \"+e);return u[e]},t.set=function(e,t){if(!u.hasOwnProperty(e))throw new Error(\"Unknown config key: \"+e);u[e]=t},t.all=function(){return s.copyObject(u)},t.moduleUrl=function(e,t){if(u.$moduleUrls[e])return u.$moduleUrls[e];var n=e.split(\"/\");t=t||n[n.length-2]||\"\";var i=\"snippets\"==t?\"/\":\"-\",r=n[n.length-1];if(\"worker\"==t&&\"-\"==i){var o=new RegExp(\"^\"+t+\"[\\\\-_]|[\\\\-_]\"+t+\"$\",\"g\");r=r.replace(o,\"\")}(!r||r==t)&&n.length>1&&(r=n[n.length-2]);var s=u[t+\"Path\"];return null==s?s=u.basePath:\"/\"==i&&(t=i=\"\"),s&&\"/\"!=s.slice(-1)&&(s+=\"/\"),s+t+i+r+this.get(\"suffix\")},t.setModuleUrl=function(e,t){return u.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,i){var r,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{r=e(n)}catch(e){}if(r&&!t.$loading[n])return i&&i(r);if(t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(i),!(t.$loading[n].length>1)){var s=function(){e([n],function(e){t._emit(\"load.module\",{name:n,module:e});var i=t.$loading[n];t.$loading[n]=null,i.forEach(function(t){t&&t(e)})})};if(!t.get(\"packaged\"))return s();a.loadScript(t.moduleUrl(n,o),s)}},r(!0),t.init=r}),ace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/config\"],function(e,t,n){\"use strict\";var i=e(\"../lib/event\"),r=e(\"../lib/useragent\"),o=e(\"./default_handlers\").DefaultHandlers,s=e(\"./default_gutter_handler\").GutterHandler,a=e(\"./mouse_event\").MouseEvent,l=e(\"./dragdrop_handler\").DragdropHandler,c=e(\"../config\"),u=function(e){var t=this;this.editor=e,new o(this),new s(this),new l(this);var n=function(t){(!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement()))&&window.focus(),e.focus()},a=e.renderer.getMouseEventTarget();i.addListener(a,\"click\",this.onMouseEvent.bind(this,\"click\")),i.addListener(a,\"mousemove\",this.onMouseMove.bind(this,\"mousemove\")),i.addMultiMouseDownListener([a,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,\"onMouseEvent\"),i.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,\"mousewheel\")),i.addTouchMoveListener(e.container,this.onTouchMove.bind(this,\"touchmove\"));var c=e.renderer.$gutter;i.addListener(c,\"mousedown\",this.onMouseEvent.bind(this,\"guttermousedown\")),i.addListener(c,\"click\",this.onMouseEvent.bind(this,\"gutterclick\")),i.addListener(c,\"dblclick\",this.onMouseEvent.bind(this,\"gutterdblclick\")),i.addListener(c,\"mousemove\",this.onMouseEvent.bind(this,\"guttermousemove\")),i.addListener(a,\"mousedown\",n),i.addListener(c,\"mousedown\",n),r.isIE&&e.renderer.scrollBarV&&(i.addListener(e.renderer.scrollBarV.element,\"mousedown\",n),i.addListener(e.renderer.scrollBarH.element,\"mousedown\",n)),e.on(\"mousemove\",function(n){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var i=e.renderer.screenToTextCoordinates(n.x,n.y),r=e.session.selection.getRange(),o=e.renderer;!r.isEmpty()&&r.insideStart(i.row,i.column)?o.setCursorStyle(\"default\"):o.setCursorStyle(\"\")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;n&&n.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var n=new a(t,this.editor);n.speed=2*this.$scrollSpeed,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new a(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var o=this,s=function(e){if(e){if(r.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new a(e,o.editor),o.$mouseMoved=!0}},l=function(e){clearInterval(u),c(),o[o.state+\"End\"]&&o[o.state+\"End\"](e),o.state=\"\",null==n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent(\"mouseup\",e)},c=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(r.isOldIE&&\"dblclick\"==e.domEvent.type)return setTimeout(function(){l(e)});o.$onCaptureMouseMove=s,o.releaseMouse=i.capture(this.editor.container,s,l);var u=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&\"contextmenu\"!=t.domEvent.type||(this.editor.off(\"nativecontextmenu\",e),t&&t.domEvent&&i.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on(\"nativecontextmenu\",e)}}).call(u.prototype),c.defineOptions(u.prototype,\"mouseHandler\",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:r.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=u}),ace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";function i(e){e.on(\"click\",function(t){var n=t.getDocumentPosition(),i=e.session,r=i.getFoldAt(n.row,n.column,1);r&&(t.getAccelKey()?i.removeFold(r):i.expandFold(r),t.stop())}),e.on(\"gutterclick\",function(t){if(\"foldWidgets\"==e.renderer.$gutterLayer.getRegion(t)){var n=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[n]&&e.session.onFoldWidgetClick(n,t),e.isFocused()||e.focus(),t.stop()}}),e.on(\"gutterdblclick\",function(t){if(\"foldWidgets\"==e.renderer.$gutterLayer.getRegion(t)){var n=t.getDocumentPosition().row,i=e.session,r=i.getParentFoldRangeData(n,!0),o=r.range||r.firstRange;if(o){n=o.start.row;var s=i.getFoldAt(n,i.getLine(n).length,1);s?i.removeFold(s):(i.addFold(\"...\",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=i}),ace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"],function(e,t,n){\"use strict\";var i=e(\"../lib/keys\"),r=e(\"../lib/event\"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){\"function\"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);-1!=n&&this.$handlers.splice(n,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==n&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1!=t&&(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||\"\"}).filter(Boolean).join(\" \")},this.$callKeyboardHandlers=function(e,t,n,i){for(var o,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&!((o=this.$handlers[l].handleKeyboard(this.$data,e,t,n,i))&&o.command&&(s=\"null\"==o.command||a.exec(o.command,this.$editor,o.args,i),s&&i&&-1!=e&&1!=o.passEvent&&1!=o.command.passEvent&&r.stopEvent(i),s)););return s||-1!=e||(o={command:\"insertstring\"},s=a.exec(\"insertstring\",this.$editor,t)),s&&this.$editor._signal&&this.$editor._signal(\"keyboardActivity\",o),s},this.onCommandKey=function(e,t,n){var r=i.keyCodeToString(n);this.$callKeyboardHandlers(t,r,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";function i(e,t,n,i){var r=a?p:f,m=null,g=null,v=null,y=0,b=null,w=-1,E=null,F=null,S=[];if(!i)for(E=0,i=[];E<n;E++)i[E]=s(e[E]);for(l=a,c=!1,u=!1,h=!1,d=!1,F=0;F<n;F++){if(m=y,S[F]=g=o(e,i,S,F),y=r[m][g],b=240&y,y&=15,t[F]=v=r[y][5],b>0)if(16==b){for(E=w;E<F;E++)t[E]=1;w=-1}else w=-1;if(r[y][6])-1==w&&(w=F);else if(w>-1){for(E=w;E<F;E++)t[E]=v;w=-1}i[F]==C&&(t[F]=0),l|=v}if(d)for(E=0;E<n;E++)if(i[E]==A){t[E]=a;for(var $=E-1;$>=0&&i[$]==x;$--)t[$]=a}}function r(e,t,n){if(!(l<e)){if(1==e&&a==m&&!h)return void n.reverse();for(var i,r,o,s,c=n.length,u=0;u<c;){if(t[u]>=e){for(i=u+1;i<c&&t[i]>=e;)i++;for(r=u,o=i-1;r<o;r++,o--)s=n[r],n[r]=n[o],n[o]=s;u=i}u++}}}function o(e,t,n,i){var r,o,s,l,f=t[i];switch(f){case g:case v:c=!1;case w:case b:return f;case y:return c?b:y;case E:return c=!0,u=!0,v;case x:return w;case F:return i<1||i+1>=t.length||(r=n[i-1])!=y&&r!=b||(o=t[i+1])!=y&&o!=b?w:(c&&(o=b),o==r?o:w);case S:return r=i>0?n[i-1]:C,r==y&&i+1<t.length&&t[i+1]==y?y:w;case $:if(i>0&&n[i-1]==y)return y;if(c)return w;for(l=i+1,s=t.length;l<s&&t[l]==$;)l++;return l<s&&t[l]==y?y:w;case k:for(s=t.length,l=i+1;l<s&&t[l]==k;)l++;if(l<s){var p=e[i],m=p>=1425&&p<=2303||64286==p;if(r=t[l],m&&(r==v||r==E))return v}return i<1||(r=t[i-1])==C?w:n[i-1];case C:return c=!1,h=!0,a;case A:return d=!0,w;case _:case B:case T:case L:case D:c=!1;case O:return w}}function s(e){var t=e.charCodeAt(0),n=t>>8;return 0==n?t>191?g:R[t]:5==n?/[\\u0591-\\u05f4]/.test(e)?v:g:6==n?/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(e)?k:/[\\u0660-\\u0669\\u066b-\\u066c]/.test(e)?b:1642==t?$:/[\\u06f0-\\u06f9]/.test(e)?y:E:32==n&&t<=8287?P[255&t]:254==n&&t>=65136?E:w}var a=0,l=0,c=!1,u=!1,h=!1,d=!1,f=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],p=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],m=1,g=0,v=1,y=2,b=3,w=4,C=5,A=6,E=7,x=8,F=9,S=10,$=11,k=12,_=13,B=14,D=15,T=16,L=17,O=18,R=[O,O,O,O,O,O,O,O,O,A,C,A,x,C,O,O,O,O,O,O,O,O,O,O,O,O,O,O,C,C,C,A,x,w,w,$,$,$,w,w,w,w,w,S,F,S,F,F,y,y,y,y,y,y,y,y,y,y,F,w,w,w,w,w,w,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,w,w,w,w,w,w,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,w,w,w,w,O,O,O,O,O,O,C,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,F,w,$,$,$,$,w,w,w,w,g,w,w,O,w,w,$,$,y,y,w,g,w,w,w,y,g,w,w,w,w,w],P=[x,x,x,x,x,x,x,x,x,x,x,O,O,O,g,v,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,x,C,_,B,D,T,L,F,$,$,$,$,$,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,F,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,x];t.L=g,t.R=v,t.EN=y,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.DOT=\"·\",t.doBidiReorder=function(e,n,o){if(e.length<2)return{};var s=e.split(\"\"),l=new Array(s.length),c=new Array(s.length),u=[];a=o?m:0,i(s,u,s.length,n);for(var h=0;h<l.length;l[h]=h,h++);r(2,u,l),r(1,u,l);for(var h=0;h<l.length-1;h++)n[h]===b?u[h]=t.AN:u[h]===v&&(n[h]>E&&n[h]<_||n[h]===w||n[h]===O)?u[h]=t.ON_R:h>0&&\"ل\"===s[h-1]&&/\\u0622|\\u0623|\\u0625|\\u0627/.test(s[h])&&(u[h-1]=u[h]=t.R_H,h++);s[s.length-1]===t.DOT&&(u[s.length-1]=t.B);for(var h=0;h<l.length;h++)c[h]=u[l[h]];return{logicalFromVisual:l,bidiLevels:c}},t.hasBidiCharacters=function(e,t){for(var n=!1,i=0;i<e.length;i++)t[i]=s(e.charAt(i)),n||t[i]!=v&&t[i]!=E||(n=!0);return n},t.getVisualFromLogicalIdx=function(e,t){for(var n=0;n<t.logicalFromVisual.length;n++)if(t.logicalFromVisual[n]==e)return n;return 0}}),ace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\",\"ace/lib/useragent\"],function(e,t,n){\"use strict\";var i=e(\"./lib/bidiutil\"),r=e(\"./lib/lang\"),o=e(\"./lib/useragent\"),s=/[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/,a=function(e){this.session=e,this.bidiMap={},this.currentRow=null,this.bidiUtil=i,this.charWidths=[],this.EOL=\"¬\",this.showInvisibles=!0,this.isRtlDir=!1,this.line=\"\",this.wrapIndent=0,this.isLastRow=!1,this.EOF=\"¶\",this.seenBidi=!1};(function(){this.isBidiRow=function(e,t,n){return!!this.seenBidi&&(e!==this.currentRow&&(this.currentRow=e,this.updateRowLine(t,n),this.updateBidiMap()),this.bidiMap.bidiLevels)},this.onChange=function(e){this.seenBidi?this.currentRow=null:\"insert\"==e.action&&s.test(e.lines.join(\"\\n\"))&&(this.seenBidi=!0,this.currentRow=null)},this.getDocumentRow=function(){var e=0,t=this.session.$screenRowCache;if(t.length){var n=this.session.$getRowCacheIndex(t,this.currentRow);n>=0&&(e=this.session.$docRowCache[n])}return e},this.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length)for(var n,i=this.session.$getRowCacheIndex(t,this.currentRow);this.currentRow-e>0&&(n=this.session.$getRowCacheIndex(t,this.currentRow-e-1))===i;)i=n,e++;return e},this.updateRowLine=function(e,t){if(void 0===e&&(e=this.getDocumentRow()),this.wrapIndent=0,this.isLastRow=e===this.session.getLength()-1,this.line=this.session.getLine(e),this.session.$useWrapMode){var n=this.session.$wrapData[e];n&&(void 0===t&&(t=this.getSplitIndex()),t>0&&n.length?(this.wrapIndent=n.indent,this.line=t<n.length?this.line.substring(n[t-1],n[n.length-1]):this.line.substring(n[n.length-1])):this.line=this.line.substring(0,n[t]))}var o,s=this.session,a=0;this.line=this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g,function(e,t){return\"\\t\"===e||s.isFullWidth(e.charCodeAt(0))?(o=\"\\t\"===e?s.getScreenTabSize(t+a):2,a+=o-1,r.stringRepeat(i.DOT,o)):e})},this.updateBidiMap=function(){var e=[],t=this.isLastRow?this.EOF:this.EOL,n=this.line+(this.showInvisibles?t:i.DOT);i.hasBidiCharacters(n,e)?this.bidiMap=i.doBidiReorder(n,e,this.isRtlDir):this.bidiMap={}},this.markAsDirty=function(){this.currentRow=null},this.updateCharacterWidths=function(e){if(this.seenBidi&&this.characterWidth!==e.$characterSize.width){var t=this.characterWidth=e.$characterSize.width,n=e.$measureCharWidth(\"ה\");this.charWidths[i.L]=this.charWidths[i.EN]=this.charWidths[i.ON_R]=t,this.charWidths[i.R]=this.charWidths[i.AN]=n,this.charWidths[i.R_H]=o.isChrome?n:.45*n,this.charWidths[i.B]=0,this.currentRow=null}},this.getShowInvisibles=function(){return this.showInvisibles},this.setShowInvisibles=function(e){this.showInvisibles=e,this.currentRow=null},this.setEolChar=function(e){this.EOL=e},this.setTextDir=function(e){this.isRtlDir=e},this.getPosLeft=function(e){e-=this.wrapIndent;var t=i.getVisualFromLogicalIdx(e>0?e-1:0,this.bidiMap),n=this.bidiMap.bidiLevels,r=0;0===e&&n[t]%2!=0&&t++;for(var o=0;o<t;o++)r+=this.charWidths[n[o]];return 0!==e&&n[t]%2==0&&(r+=this.charWidths[n[t]]),this.wrapIndent&&(r+=this.wrapIndent*this.charWidths[i.L]),r},this.getSelections=function(e,t){for(var n,r,o=this.bidiMap,s=o.bidiLevels,a=this.wrapIndent*this.charWidths[i.L],l=[],c=Math.min(e,t)-this.wrapIndent,u=Math.max(e,t)-this.wrapIndent,h=!1,d=!1,f=0,p=0;p<s.length;p++)r=o.logicalFromVisual[p],n=s[p],h=r>=c&&r<u,h&&!d?f=a:!h&&d&&l.push({left:f,width:a-f}),a+=this.charWidths[n],d=h;return h&&p===s.length&&l.push({left:f,width:a-f}),l},this.offsetToCol=function(e){var t=0,e=Math.max(e,0),n=0,r=0,o=this.bidiMap.bidiLevels,s=this.charWidths[o[r]];for(this.wrapIndent&&(e-=this.wrapIndent*this.charWidths[i.L]);e>n+s/2;){if(n+=s,r===o.length-1){s=0;break}s=this.charWidths[o[++r]]}return r>0&&o[r-1]%2!=0&&o[r]%2==0?(e<n&&r--,t=this.bidiMap.logicalFromVisual[r]):r>0&&o[r-1]%2==0&&o[r]%2!=0?t=1+(e>n?this.bidiMap.logicalFromVisual[r]:this.bidiMap.logicalFromVisual[r-1]):this.isRtlDir&&r===o.length-1&&0===s&&o[r-1]%2==0||!this.isRtlDir&&0===r&&o[r]%2!=0?t=1+this.bidiMap.logicalFromVisual[r]:(r>0&&o[r-1]%2!=0&&0!==s&&r--,t=this.bidiMap.logicalFromVisual[r]),t+this.wrapIndent}}).call(a.prototype),t.BidiHandler=a}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";var i=function(e,t){return e.row-t.row||e.column-t.column},r=function(e,t,n,i){this.start={row:e,column:t},this.end={row:n,column:i}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,n=e.end,i=e.start;return t=this.compare(n.row,n.column),1==t?(t=this.compare(i.row,i.column),1==t?2:0==t?1:0):-1==t?-2:(t=this.compare(i.row,i.column),-1==t?-1:1==t?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){\"object\"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){\"object\"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)&&(!this.isEnd(e,t)&&!this.isStart(e,t))},this.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},this.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:t<this.start.column?-1:t>this.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var i={row:t+1,column:0};else if(this.start.row<e)var i={row:e,column:0};return r.fromPoints(i||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(0==n)return this;if(-1==n)var i={row:e,column:t};else var o={row:e,column:t};return r.fromPoints(i||this.start,o||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return r.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new r(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new r(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new r(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(r.prototype),r.fromPoints=function(e,t){return new r(e.row,e.column,t.row,t.column)},r.comparePoints=i,r.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=r}),ace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"],function(e,t,n){\"use strict\";var i=e(\"./lib/oop\"),r=e(\"./lib/lang\"),o=e(\"./lib/event_emitter\").EventEmitter,s=e(\"./range\").Range,a=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var t=this;this.lead.on(\"change\",function(e){t._emit(\"changeCursor\"),t.$isEmpty||t._emit(\"changeSelection\"),t.$keepDesiredColumnOnChange||e.old.column==e.value.column||(t.$desiredColumn=null)}),this.selectionAnchor.on(\"change\",function(){t.$isEmpty||t._emit(\"changeSelection\")})};(function(){i.implement(this,o),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return!this.isEmpty()&&this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.anchor.setPosition(e,t),this.$isEmpty&&(this.$isEmpty=!1,this._emit(\"changeSelection\"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(e){if(this.$isEmpty)return void this.moveCursorTo(this.lead.row,this.lead.column+e);var t=this.getSelectionAnchor(),n=this.getSelectionLead(),i=this.isBackwards();i&&0===t.column||this.setSelectionAnchor(t.row,t.column+e),(i||0!==n.column)&&this.$moveSelection(function(){this.moveCursorTo(n.row,n.column+e)})},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit(\"changeSelection\"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(void 0===t){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n,i=\"number\"==typeof e?e:this.lead.row,r=this.session.getFoldLine(i);return r?(i=r.start.row,n=r.end.row):n=i,!0===t?new s(i,0,n,this.session.getLine(n).length):new s(i,0,n+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(e,t,n){var i=e.column,r=e.column+t;return n<0&&(i=e.column-t,r=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(i,r).split(\" \").length-1==t},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(t,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row<this.doc.getLength()-1&&this.moveCursorTo(this.lead.row+1,0);else{var n=this.session.getTabSize(),t=this.lead;this.wouldMoveIntoSoftTab(t,n,1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,n):this.moveCursorBy(0,1)}},this.moveCursorLineStart=function(){var e=this.lead.row,t=this.lead.column,n=this.session.documentToScreenRow(e,t),i=this.session.screenToDocumentPosition(n,0),r=this.session.getDisplayLine(e,null,i.row,i.column),o=r.match(/^\\s*/);o[0].length==t||this.session.$useEmacsStyleLineStart||(i.column+=o[0].length),this.moveCursorToPosition(i)},this.moveCursorLineEnd=function(){var e=this.lead,t=this.session.getDocumentLastRowColumnPosition(e.row,e.column);if(this.lead.column==t.column){var n=this.session.getLine(t.row);if(t.column==n.length){var i=n.search(/\\s+$/);i>0&&(t.column=i)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var r=this.session.getFoldAt(e,t,1);return r?void this.moveCursorTo(r.end.row,r.end.column):(this.session.nonTokenRe.exec(i)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=n.substring(t)),t>=n.length?(this.moveCursorTo(e,n.length),this.moveCursorRight(),void(e<this.doc.getLength()-1&&this.moveCursorWordRight())):(this.session.tokenRe.exec(i)&&(t+=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),void this.moveCursorTo(e,t)))},this.moveCursorLongWordLeft=function(){var e,t=this.lead.row,n=this.lead.column;if(e=this.session.getFoldAt(t,n,-1))return void this.moveCursorTo(e.start.row,e.start.column);var i=this.session.getFoldStringAt(t,n,-1);null==i&&(i=this.doc.getLine(t).substring(0,n));var o=r.stringReverse(i);if(this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0,this.session.nonTokenRe.exec(o)&&(n-=this.session.nonTokenRe.lastIndex,o=o.slice(this.session.nonTokenRe.lastIndex),this.session.nonTokenRe.lastIndex=0),n<=0)return this.moveCursorTo(t,0),this.moveCursorLeft(),void(t>0&&this.moveCursorWordLeft());this.session.tokenRe.exec(o)&&(n-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,n)},this.$shortWordEndIndex=function(e){var t,n=0,i=/\\s/,r=this.session.tokenRe;if(r.lastIndex=0,this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(t=e[n])&&i.test(t);)n++;if(n<1)for(r.lastIndex=0;(t=e[n])&&!r.test(t);)if(r.lastIndex=0,n++,i.test(t)){if(n>2){n--;break}for(;(t=e[n])&&i.test(t);)n++;if(n>2)break}}return r.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t),r=this.session.getFoldAt(e,t,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==n.length){var o=this.doc.getLength();do{e++,i=this.doc.getLine(e)}while(e<o&&/^\\s*$/.test(i));/^\\s+/.test(i)||(i=\"\"),t=0}var s=this.$shortWordEndIndex(i);this.moveCursorTo(e,t+s)},this.moveCursorShortWordLeft=function(){var e,t=this.lead.row,n=this.lead.column;if(e=this.session.getFoldAt(t,n,-1))return this.moveCursorTo(e.start.row,e.start.column);var i=this.session.getLine(t).substring(0,n);if(0===n){do{t--,i=this.doc.getLine(t)}while(t>0&&/^\\s*$/.test(i));n=i.length,/\\s+$/.test(i)||(i=\"\")}var o=r.stringReverse(i),s=this.$shortWordEndIndex(o);return this.moveCursorTo(t,n-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n,i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(0!==e&&(this.session.$bidiHandler.isBidiRow(i.row,this.lead.row)?(n=this.session.$bidiHandler.getPosLeft(i.column),i.column=Math.round(n/this.session.$bidiHandler.charWidths[0])):n=i.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var r=this.session.screenToDocumentPosition(i.row+e,i.column,n);0!==e&&0===t&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&(r.row>0||e>0)&&r.row++,this.moveCursorTo(r.row,r.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var i=this.session.getFoldAt(e,t,1);i&&(e=i.start.row,t=i.start.column),this.$keepDesiredColumnOnChange=!0;var r=this.session.getLine(e);/[\\uDC00-\\uDFFF]/.test(r.charAt(t))&&r.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var i=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(i.row,i.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return s.fromPoints(t,n)}catch(e){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),ace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/config\"],function(e,t,n){\"use strict\";var i=e(\"./config\"),r=2e3,o=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var n=this.states[t],i=[],r=0,o=this.matchMappings[t]={defaultToken:\"text\"},s=\"g\",a=[],l=0;l<n.length;l++){var c=n[l];if(c.defaultToken&&(o.defaultToken=c.defaultToken),c.caseInsensitive&&(s=\"gi\"),null!=c.regex){c.regex instanceof RegExp&&(c.regex=c.regex.toString().slice(1,-1));var u=c.regex,h=new RegExp(\"(?:(\"+u+\")|(.))\").exec(\"a\").length-2;Array.isArray(c.token)?1==c.token.length||1==h?c.token=c.token[0]:h-1!=c.token.length?(this.reportError(\"number of classes and regexp groups doesn't match\",{rule:c,groupCount:h-1}),c.token=c.token[0]):(c.tokenArray=c.token,c.token=null,c.onMatch=this.$arrayTokens):\"function\"!=typeof c.token||c.onMatch||(c.onMatch=h>1?this.$applyToken:c.token),h>1&&(/\\\\\\d/.test(c.regex)?u=c.regex.replace(/\\\\([0-9]+)/g,function(e,t){return\"\\\\\"+(parseInt(t,10)+r+1)}):(h=1,u=this.removeCapturingGroups(c.regex)),c.splitRegex||\"string\"==typeof c.token||a.push(c)),o[r]=l,r+=h,i.push(u),c.onMatch||(c.onMatch=null)}}i.length||(o[0]=0,i.push(\"$\")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp(\"(\"+i.join(\")|(\")+\")|($)\",s)}};(function(){this.$setMaxTokenCount=function(e){r=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(\"string\"==typeof n)return[{type:n,value:e}];for(var i=[],r=0,o=n.length;r<o;r++)t[r]&&(i[i.length]={type:n[r],value:t[r]});return i},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return\"text\";for(var n=[],i=this.tokenArray,r=0,o=i.length;r<o;r++)t[r+1]&&(n[n.length]={type:i[r],value:t[r+1]});return n},this.removeCapturingGroups=function(e){return e.replace(/\\[(?:\\\\.|[^\\]])*?\\]|\\\\.|\\(\\?[:=!]|(\\()/g,function(e,t){return t?\"(?:\":e})},this.createSplitterRegexp=function(e,t){if(-1!=e.indexOf(\"(?=\")){var n=0,i=!1,r={};e.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g,function(e,t,o,s,a,l){return i?i=\"]\"!=a:a?i=!0:s?(n==r.stack&&(r.end=l+1,r.stack=-1),n--):o&&(n++,1!=o.length&&(r.stack=n,r.start=l)),e}),null!=r.end&&/^\\)*$/.test(e.substr(r.end))&&(e=e.substring(0,r.start)+e.substr(r.end))}return\"^\"!=e.charAt(0)&&(e=\"^\"+e),\"$\"!=e.charAt(e.length-1)&&(e+=\"$\"),new RegExp(e,(t||\"\").replace(\"g\",\"\"))},this.getLineTokens=function(e,t){if(t&&\"string\"!=typeof t){var n=t.slice(0);t=n[0],\"#tmp\"===t&&(n.shift(),t=n.shift())}else var n=[];var i=t||\"start\",o=this.states[i];o||(i=\"start\",o=this.states[i]);var s=this.matchMappings[i],a=this.regExps[i];a.lastIndex=0;for(var l,c=[],u=0,h=0,d={type:null,value:\"\"};l=a.exec(e);){var f=s.defaultToken,p=null,m=l[0],g=a.lastIndex;if(g-m.length>u){var v=e.substring(u,g-m.length);d.type==f?d.value+=v:(d.type&&c.push(d),d={type:f,value:v})}for(var y=0;y<l.length-2;y++)if(void 0!==l[y+1]){p=o[s[y]],f=p.onMatch?p.onMatch(m,i,n,e):p.token,p.next&&(i=\"string\"==typeof p.next?p.next:p.next(i,n),o=this.states[i],o||(this.reportError(\"state doesn't exist\",i),i=\"start\",o=this.states[i]),s=this.matchMappings[i],u=g,a=this.regExps[i],a.lastIndex=g),p.consumeLineEnd&&(u=g);break}if(m)if(\"string\"==typeof f)p&&!1===p.merge||d.type!==f?(d.type&&c.push(d),d={type:f,value:m}):d.value+=m;else if(f){d.type&&c.push(d),d={type:null,value:\"\"};for(var y=0;y<f.length;y++)c.push(f[y])}if(u==e.length)break;if(u=g,h++>r){for(h>2*e.length&&this.reportError(\"infinite loop with in ace tokenizer\",{startState:t,line:e});u<e.length;)d.type&&c.push(d),d={value:e.substring(u,u+=2e3),type:\"overflow\"};i=\"start\",n=[];break}}return d.type&&c.push(d),n.length>1&&n[0]!==i&&n.unshift(\"#tmp\",i),{tokens:c,state:n.length?n:i}},this.reportError=i.reportError}).call(o.prototype),t.Tokenizer=o}),ace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"],function(e,t,n){\"use strict\";var i=e(\"../lib/lang\"),r=function(){this.$rules={start:[{token:\"empty_line\",regex:\"^$\"},{defaultToken:\"text\"}]}};(function(){this.addRules=function(e,t){if(t)for(var n in e){for(var i=e[n],r=0;r<i.length;r++){var o=i[r];(o.next||o.onMatch)&&(\"string\"==typeof o.next&&0!==o.next.indexOf(t)&&(o.next=t+o.next),o.nextState&&0!==o.nextState.indexOf(t)&&(o.nextState=t+o.nextState))}this.$rules[t+n]=i}else for(var n in e)this.$rules[n]=e[n]},this.getRules=function(){return this.$rules},this.embedRules=function(e,t,n,r,o){var s=\"function\"==typeof e?(new e).getRules():e;if(r)for(var a=0;a<r.length;a++)r[a]=t+r[a];else{r=[];for(var l in s)r.push(t+l)}if(this.addRules(s,t),n)for(var c=Array.prototype[o?\"push\":\"unshift\"],a=0;a<r.length;a++)c.apply(this.$rules[r[a]],i.deepCopy(n));this.$embeds||(this.$embeds=[]),this.$embeds.push(t)},this.getEmbeds=function(){return this.$embeds};var e=function(e,t){return(\"start\"!=e||t.length)&&t.unshift(this.nextState,e),this.nextState},t=function(e,t){return t.shift(),t.shift()||\"start\"};this.normalizeRules=function(){function n(o){var s=r[o];s.processed=!0;for(var a=0;a<s.length;a++){var l=s[a],c=null;Array.isArray(l)&&(c=l,l={}),!l.regex&&l.start&&(l.regex=l.start,l.next||(l.next=[]),l.next.push({defaultToken:l.token},{token:l.token+\".end\",regex:l.end||l.start,next:\"pop\"}),l.token=l.token+\".start\",l.push=!0);var u=l.next||l.push;if(u&&Array.isArray(u)){var h=l.stateName;h||(h=l.token,\"string\"!=typeof h&&(h=h[0]||\"\"),r[h]&&(h+=i++)),r[h]=u,l.next=h,n(h)}else\"pop\"==u&&(l.next=t);if(l.push&&(l.nextState=l.next||l.push,l.next=e,delete l.push),l.rules)for(var d in l.rules)r[d]?r[d].push&&r[d].push.apply(r[d],l.rules[d]):r[d]=l.rules[d];var f=\"string\"==typeof l?l:l.include;if(f&&(c=Array.isArray(f)?f.map(function(e){return r[e]}):r[f]),c){var p=[a,1].concat(c);l.noEscape&&(p=p.filter(function(e){return!e.next})),s.splice.apply(s,p),a--}l.keywordMap&&(l.token=this.createKeywordMapper(l.keywordMap,l.defaultToken||\"text\",l.caseInsensitive),delete l.defaultToken)}}var i=0,r=this.$rules;Object.keys(r).forEach(n,this)},this.createKeywordMapper=function(e,t,n,i){var r=Object.create(null);return Object.keys(e).forEach(function(t){var o=e[t];n&&(o=o.toLowerCase());for(var s=o.split(i||\"|\"),a=s.length;a--;)r[s[a]]=t}),Object.getPrototypeOf(r)&&(r.__proto__=null),this.$keywordList=Object.keys(r),e=null,n?function(e){return r[e.toLowerCase()]||t}:function(e){return r[e]||t}},this.getKeywords=function(){return this.$keywords}}).call(r.prototype),t.TextHighlightRules=r}),ace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";var i=function(){this.$behaviours={}};(function(){this.add=function(e,t,n){switch(void 0){case this.$behaviours:this.$behaviours={};case this.$behaviours[e]:this.$behaviours[e]={}}this.$behaviours[e][t]=n},this.addBehaviours=function(e){for(var t in e)for(var n in e[t])this.add(t,n,e[t][n])},this.remove=function(e){this.$behaviours&&this.$behaviours[e]&&delete this.$behaviours[e]},this.inherit=function(e,t){if(\"function\"==typeof e)var n=(new e).getBehaviours(t);else var n=e.getBehaviours(t);this.addBehaviours(n)},this.getBehaviours=function(e){if(e){for(var t={},n=0;n<e.length;n++)this.$behaviours[e[n]]&&(t[e[n]]=this.$behaviours[e[n]]);return t}return this.$behaviours}}).call(i.prototype),t.Behaviour=i}),ace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){\"use strict\";var i=e(\"./range\").Range,r=function(e,t,n){this.$session=e,this.$row=t,this.$rowTokens=e.getTokens(t);var i=e.getTokenAt(t,n);this.$tokenIndex=i?i.index:-1};(function(){this.stepBackward=function(){for(this.$tokenIndex-=1;this.$tokenIndex<0;){if(this.$row-=1,this.$row<0)return this.$row=0,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=this.$rowTokens.length-1}return this.$rowTokens[this.$tokenIndex]},this.stepForward=function(){this.$tokenIndex+=1;for(var e;this.$tokenIndex>=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(void 0!==n)return n;for(n=0;t>0;)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new i(this.$row,t,this.$row,t+e.value.length)}}).call(r.prototype),t.TokenIterator=r}),ace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"],function(e,t,n){\"use strict\";var i,r=e(\"../../lib/oop\"),o=e(\"../behaviour\").Behaviour,s=e(\"../../token_iterator\").TokenIterator,a=e(\"../../lib/lang\"),l=[\"text\",\"paren.rparen\",\"punctuation.operator\"],c=[\"text\",\"paren.rparen\",\"punctuation.operator\",\"comment\"],u={},h={'\"':'\"',\"'\":\"'\"},d=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,u.rangeCount!=e.multiSelect.rangeCount&&(u={rangeCount:e.multiSelect.rangeCount})),u[t])return i=u[t];i=u[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:\"\",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:\"\",maybeInsertedLineEnd:\"\"}},f=function(e,t,n,i){var r=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,r,e.end.column+(r?0:1)]}},p=function(e){this.add(\"braces\",\"insertion\",function(t,n,r,o,s){var l=r.getCursorPosition(),c=o.doc.getLine(l.row);if(\"{\"==s){d(r);var u=r.getSelectionRange(),h=o.doc.getTextRange(u);if(\"\"!==h&&\"{\"!==h&&r.getWrapBehavioursEnabled())return f(u,h,\"{\",\"}\");if(p.isSaneInsertion(r,o))return/[\\]\\}\\)]/.test(c[l.column])||r.inMultiSelectMode||e&&e.braces?(p.recordAutoInsert(r,o,\"}\"),{text:\"{}\",selection:[1,1]}):(p.recordMaybeInsert(r,o,\"{\"),{text:\"{\",selection:[1,1]})}else if(\"}\"==s){d(r);var m=c.substring(l.column,l.column+1);if(\"}\"==m){var g=o.$findOpeningBracket(\"}\",{column:l.column+1,row:l.row});if(null!==g&&p.isAutoInsertedClosing(l,c,s))return p.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}else{if(\"\\n\"==s||\"\\r\\n\"==s){d(r);var v=\"\";p.isMaybeInsertedClosing(l,c)&&(v=a.stringRepeat(\"}\",i.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var m=c.substring(l.column,l.column+1);if(\"}\"===m){var y=o.findMatchingBracket({row:l.row,column:l.column+1},\"}\");if(!y)return null;var b=this.$getIndent(o.getLine(y.row))}else{if(!v)return void p.clearMaybeInsertedClosing();var b=this.$getIndent(c)}var w=b+o.getTabString();return{text:\"\\n\"+w+\"\\n\"+b+v,selection:[1,w.length,1,w.length]}}p.clearMaybeInsertedClosing()}}),this.add(\"braces\",\"deletion\",function(e,t,n,r,o){var s=r.doc.getTextRange(o);if(!o.isMultiLine()&&\"{\"==s){d(n);if(\"}\"==r.doc.getLine(o.start.row).substring(o.end.column,o.end.column+1))return o.end.column++,o;i.maybeInsertedBrackets--}}),this.add(\"parens\",\"insertion\",function(e,t,n,i,r){if(\"(\"==r){d(n);var o=n.getSelectionRange(),s=i.doc.getTextRange(o);if(\"\"!==s&&n.getWrapBehavioursEnabled())return f(o,s,\"(\",\")\");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,\")\"),{text:\"()\",selection:[1,1]}}else if(\")\"==r){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(\")\"==c){var u=i.$findOpeningBracket(\")\",{column:a.column+1,row:a.row});if(null!==u&&p.isAutoInsertedClosing(a,l,r))return p.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"parens\",\"deletion\",function(e,t,n,i,r){var o=i.doc.getTextRange(r);if(!r.isMultiLine()&&\"(\"==o){d(n);if(\")\"==i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2))return r.end.column++,r}}),this.add(\"brackets\",\"insertion\",function(e,t,n,i,r){if(\"[\"==r){d(n);var o=n.getSelectionRange(),s=i.doc.getTextRange(o);if(\"\"!==s&&n.getWrapBehavioursEnabled())return f(o,s,\"[\",\"]\");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,\"]\"),{text:\"[]\",selection:[1,1]}}else if(\"]\"==r){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(\"]\"==c){var u=i.$findOpeningBracket(\"]\",{column:a.column+1,row:a.row});if(null!==u&&p.isAutoInsertedClosing(a,l,r))return p.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"brackets\",\"deletion\",function(e,t,n,i,r){var o=i.doc.getTextRange(r);if(!r.isMultiLine()&&\"[\"==o){d(n);if(\"]\"==i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2))return r.end.column++,r}}),this.add(\"string_dquotes\",\"insertion\",function(e,t,n,i,r){var o=i.$mode.$quotes||h;if(1==r.length&&o[r]){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(r))return;d(n);var s=r,a=n.getSelectionRange(),l=i.doc.getTextRange(a);if(!(\"\"===l||1==l.length&&o[l])&&n.getWrapBehavioursEnabled())return f(a,l,s,s);if(!l){var c=n.getCursorPosition(),u=i.doc.getLine(c.row),p=u.substring(c.column-1,c.column),m=u.substring(c.column,c.column+1),g=i.getTokenAt(c.row,c.column),v=i.getTokenAt(c.row,c.column+1);if(\"\\\\\"==p&&g&&/escape/.test(g.type))return null;var y,b=g&&/string|escape/.test(g.type),w=!v||/string|escape/.test(v.type);if(m==s)(y=b!==w)&&/string\\.end/.test(v.type)&&(y=!1);else{if(b&&!w)return null;if(b&&w)return null;var C=i.$mode.tokenRe;C.lastIndex=0;var A=C.test(p);C.lastIndex=0;var E=C.test(p);if(A||E)return null;if(m&&!/[\\s;,.})\\]\\\\]/.test(m))return null;y=!0}return{text:y?s+s:\"\",selection:[1,1]}}}}),this.add(\"string_dquotes\",\"deletion\",function(e,t,n,i,r){var o=i.doc.getTextRange(r);if(!r.isMultiLine()&&('\"'==o||\"'\"==o)){d(n);if(i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)==o)return r.end.column++,r}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new s(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||\"text\",l)){var r=new s(t,n.row,n.column+1);if(!this.$matchTokenType(r.getCurrentToken()||\"text\",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||\"text\",c)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,o,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=r.row,i.autoInsertedLineEnd=n+o.substr(r.column),i.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,o)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=r.row,i.maybeInsertedLineStart=o.substr(0,r.column)+n,i.maybeInsertedLineEnd=o.substr(r.column),i.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},r.inherits(p,o),t.CstyleBehaviour=p}),ace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";t.packages={},function(e){var n=/\\w{4}/g;for(var i in e)t.packages[i]=e[i].replace(n,\"\\\\u$&\")}({L:\"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",Ll:\"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A\",Lu:\"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A\",Lt:\"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC\",Lm:\"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F\",Lo:\"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",M:\"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26\",Mn:\"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26\",Mc:\"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC\",Me:\"0488048906DE20DD-20E020E2-20E4A670-A672\",N:\"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",Nd:\"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",Nl:\"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF\",No:\"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835\",P:\"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65\",Pd:\"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D\",Ps:\"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62\",Pe:\"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63\",Pi:\"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20\",Pf:\"00BB2019201D203A2E032E052E0A2E0D2E1D2E21\",Pc:\"005F203F20402054FE33FE34FE4D-FE4FFF3F\",Po:\"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65\",S:\"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD\",Sm:\"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC\",Sc:\"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6\",Sk:\"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3\",So:\"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD\",Z:\"002000A01680180E2000-200A20282029202F205F3000\",Zs:\"002000A01680180E2000-200A202F205F3000\",Zl:\"2028\",Zp:\"2029\",C:\"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF\",Cc:\"0000-001F007F-009F\",Cf:\"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB\",Co:\"E000-F8FF\",Cs:\"D800-DFFF\",Cn:\"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF\"})}),ace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"],function(e,t,n){\"use strict\";var i=e(\"../tokenizer\").Tokenizer,r=e(\"./text_highlight_rules\").TextHighlightRules,o=e(\"./behaviour/cstyle\").CstyleBehaviour,s=e(\"../unicode\"),a=e(\"../lib/lang\"),l=e(\"../token_iterator\").TokenIterator,c=e(\"../range\").Range,u=function(){this.HighlightRules=r};(function(){this.$defaultBehaviour=new o,this.tokenRe=new RegExp(\"^[\"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+\"\\\\$_]+\",\"g\"),this.nonTokenRe=new RegExp(\"^(?:[^\"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+\"\\\\$_]|\\\\s])+\",\"g\"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new i(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart=\"\",this.blockComment=\"\",this.toggleCommentLines=function(e,t,n,i){function r(e){for(var t=n;t<=i;t++)e(o.getLine(t),t)}var o=t.doc,s=!0,l=!0,c=1/0,u=t.getTabSize(),h=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var d=this.lineCommentStart.map(a.escapeRegExp).join(\"|\"),f=this.lineCommentStart[0];else var d=a.escapeRegExp(this.lineCommentStart),f=this.lineCommentStart;d=new RegExp(\"^(\\\\s*)(?:\"+d+\") ?\"),h=t.getUseSoftTabs();var p=function(e,t){var n=e.match(d);if(n){var i=n[1].length,r=n[0].length;y(e,i,r)||\" \"!=n[0][r-1]||r--,o.removeInLine(t,i,r)}},m=f+\" \",g=function(e,t){s&&!/\\S/.test(e)||(y(e,c,c)?o.insertInLine({row:t,column:c},m):o.insertInLine({row:t,column:c},f))},v=function(e,t){return d.test(e)},y=function(e,t,n){for(var i=0;t--&&\" \"==e.charAt(t);)i++;if(i%u!=0)return!1;for(var i=0;\" \"==e.charAt(n++);)i++;return u>2?i%u!=u-1:i%u==0}}else{if(!this.blockComment)return!1;var f=this.blockComment.start,b=this.blockComment.end,d=new RegExp(\"^(\\\\s*)(?:\"+a.escapeRegExp(f)+\")\"),w=new RegExp(\"(?:\"+a.escapeRegExp(b)+\")\\\\s*$\"),g=function(e,t){v(e,t)||s&&!/\\S/.test(e)||(o.insertInLine({row:t,column:e.length},b),o.insertInLine({row:t,column:c},f))},p=function(e,t){var n;(n=e.match(w))&&o.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(d))&&o.removeInLine(t,n[1].length,n[0].length)},v=function(e,n){if(d.test(e))return!0;for(var i=t.getTokens(n),r=0;r<i.length;r++)if(\"comment\"===i[r].type)return!0}}var C=1/0;r(function(e,t){var n=e.search(/\\S/);-1!==n?(n<c&&(c=n),l&&!v(e,t)&&(l=!1)):C>e.length&&(C=e.length)}),c==1/0&&(c=C,s=!1,l=!1),h&&c%u!=0&&(c=Math.floor(c/u)*u),r(l?p:g)},this.toggleBlockComment=function(e,t,n,i){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var o,s,a=new l(t,i.row,i.column),u=a.getCurrentToken(),h=(t.selection,t.selection.toOrientedRange());if(u&&/comment/.test(u.type)){for(var d,f;u&&/comment/.test(u.type);){var p=u.value.indexOf(r.start);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;d=new c(m,g,m,g+r.start.length);break}u=a.stepBackward()}for(var a=new l(t,i.row,i.column),u=a.getCurrentToken();u&&/comment/.test(u.type);){var p=u.value.indexOf(r.end);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;f=new c(m,g,m,g+r.end.length);break}u=a.stepForward()}f&&t.remove(f),d&&(t.remove(d),o=d.start.row,s=-r.start.length)}else s=r.start.length,o=n.start.row,t.insert(n.end,r.end),t.insert(n.start,r.start);h.start.row==o&&(h.start.column+=s),h.end.row==o&&(h.end.column+=s),t.selection.fromOrientedRange(h)}},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var n=[\"toggleBlockComment\",\"toggleCommentLines\",\"getNextLineIndent\",\"checkOutdent\",\"autoOutdent\",\"transformAction\",\"getCompletions\"],t=0;t<n.length;t++)!function(e){var i=n[t],r=e[i];e[n[t]]=function(){return this.$delegator(i,arguments,r)}}(this)},this.$delegator=function(e,t,n){var i=t[0];\"string\"!=typeof i&&(i=i[0]);for(var r=0;r<this.$embeds.length;r++)if(this.$modes[this.$embeds[r]]){var o=i.split(this.$embeds[r]);if(!o[0]&&o[1]){t[0]=o[1];var s=this.$modes[this.$embeds[r]];return s[e].apply(s,t)}}var a=n.apply(this,t);return n?a:void 0},this.transformAction=function(e,t,n,i,r){if(this.$behaviour){var o=this.$behaviour.getBehaviours();for(var s in o)if(o[s][t]){var a=o[s][t].apply(this,arguments);if(a)return a}}},this.getKeywords=function(e){if(!this.completionKeywords){var t=this.$tokenizer.rules,n=[];for(var i in t)for(var r=t[i],o=0,s=r.length;o<s;o++)if(\"string\"==typeof r[o].token)/keyword|support|storage/.test(r[o].token)&&n.push(r[o].regex);else if(\"object\"==typeof r[o].token)for(var a=0,l=r[o].token.length;a<l;a++)if(/keyword|support|storage/.test(r[o].token[a])){var i=r[o].regex.match(/\\(.+?\\)/g)[a];n.push(i.substr(1,i.length-2))}this.completionKeywords=n}return e?n.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(e,t,n,i){return(this.$keywordList||this.$createKeywordList()).map(function(e){return{name:e,value:e,score:0,meta:\"keyword\"}})},this.$id=\"ace/mode/text\"}).call(u.prototype),t.Mode=u}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";t.applyDelta=function(e,t,n){var i=t.start.row,r=t.start.column,o=e[i]||\"\";switch(t.action){case\"insert\":if(1===t.lines.length)e[i]=o.substring(0,r)+t.lines[0]+o.substring(r);else{var s=[i,1].concat(t.lines);e.splice.apply(e,s),e[i]=o.substring(0,r)+e[i],e[i+t.lines.length-1]+=o.substring(r)}break;case\"remove\":var a=t.end.column,l=t.end.row;i===l?e[i]=o.substring(0,r)+o.substring(a):e.splice(i,l-i+1,o.substring(0,r)+e[l].substring(a))}}}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(e,t,n){\"use strict\";var i=e(\"./lib/oop\"),r=e(\"./lib/event_emitter\").EventEmitter,o=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),void 0===n?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var i=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&i}function t(t,n,i){var r=\"insert\"==t.action,o=(r?1:-1)*(t.end.row-t.start.row),s=(r?1:-1)*(t.end.column-t.start.column),a=t.start,l=r?a:t.end;return e(n,a,i)?{row:n.row,column:n.column}:e(l,n,!i)?{row:n.row+o,column:n.column+(n.row==l.row?s:0)}:{row:a.row,column:a.column}}i.implement(this,r),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){if(!(e.start.row==e.end.row&&e.start.row!=this.row||e.start.row>this.row)){var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)}},this.setPosition=function(e,t,n){var i;if(i=n?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=i.row||this.column!=i.column){var r={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal(\"change\",{old:r,value:i})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(o.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(e,t,n){\"use strict\";var i=e(\"./lib/oop\"),r=e(\"./apply_delta\").applyDelta,o=e(\"./lib/event_emitter\").EventEmitter,s=e(\"./range\").Range,a=e(\"./anchor\").Anchor,l=function(e){this.$lines=[\"\"],0===e.length?this.$lines=[\"\"]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){i.implement(this,o),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0===\"aaa\".split(/a/).length?this.$split=function(e){return e.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:this.$split=function(e){return e.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=t?t[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return\"\\r\\n\"==e||\"\\r\"==e||\"\\n\"==e},this.getLine=function(e){return this.$lines[e]||\"\"},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||\"\").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(e,[\"\",\"\"])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),i=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:i,action:\"insert\",lines:[t]},!0),this.clonePos(i)},this.clippedPos=function(e,t){var n=this.getLength();void 0===e?e=n:e<0?e=0:e>=n&&(e=n-1,t=void 0);var i=this.getLine(e);return void 0==t&&(t=i.length),t=Math.min(Math.max(t,0),i.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([\"\"]),n=0):(t=[\"\"].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),i={row:n.row+t.length-1,column:(1==t.length?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:i,action:\"insert\",lines:t}),this.clonePos(i)},this.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:\"remove\",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},this.removeInLine=function(e,t,n){var i=this.clippedPos(e,t),r=this.clippedPos(e,n);return this.applyDelta({start:i,end:r,action:\"remove\",lines:this.getLinesForRange({start:i,end:r})},!0),this.clonePos(i)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,i=t<this.getLength()-1,r=n?e-1:e,o=n?this.getLine(r).length:0,a=i?t+1:t,l=i?0:this.getLine(a).length,c=new s(r,o,a,l),u=this.$lines.slice(e,t+1);return this.applyDelta({start:c.start,end:c.end,action:\"remove\",lines:this.getLinesForRange(c)}),u},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);return t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=\"insert\"==e.action;(n?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),r(this.$lines,e,t),this._signal(\"change\",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var n=e.lines,i=n.length,r=e.start.row,o=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=n.slice(s,a);if(a>i){e.lines=l,e.start.row=r+s,e.start.column=o;break}l.push(\"\"),this.applyDelta({start:this.pos(r+s,o),end:this.pos(r+a,o=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:\"insert\"==e.action?\"remove\":\"insert\",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var n=this.$lines||this.getAllLines(),i=this.getNewLineCharacter().length,r=t||0,o=n.length;r<o;r++)if((e-=n[r].length+i)<0)return{row:r,column:e+n[r].length+i};return{row:o-1,column:n[o-1].length}},this.positionToIndex=function(e,t){for(var n=this.$lines||this.getAllLines(),i=this.getNewLineCharacter().length,r=0,o=Math.min(e.row,n.length),s=t||0;s<o;++s)r+=n[s].length+i;return r+e.column}}).call(l.prototype),t.Document=l}),ace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(e,t,n){\"use strict\";var i=e(\"./lib/oop\"),r=e(\"./lib/event_emitter\").EventEmitter,o=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var n=this;this.$worker=function(){if(n.running){for(var e=new Date,t=n.currentLine,i=-1,r=n.doc,o=t;n.lines[t];)t++;var s=r.getLength(),a=0;for(n.running=!1;t<s;){n.$tokenizeRow(t),i=t;do{t++}while(n.lines[t]);if(++a%5==0&&new Date-e>20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,-1==i&&(i=t),o<=i&&n.fireUpdateEvent(o,i)}}};(function(){i.implement(this,r),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal(\"update\",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.lines[t]=null;else if(\"remove\"==e.action)this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||\"start\"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],i=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+\"\"!=i.state+\"\"?(this.states[e]=i.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=i.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"],function(e,t,n){\"use strict\";var i=e(\"./lib/lang\"),r=(e(\"./lib/oop\"),e(\"./range\").Range),o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||\"text\"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+\"\"!=e+\"\"&&(this.regExp=e,this.cache=[])},this.update=function(e,t,n,o){if(this.regExp)for(var s=o.firstRow,a=o.lastRow,l=s;l<=a;l++){var c=this.cache[l];null==c&&(c=i.getMatchOffsets(n.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new r(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:\"\");for(var u=c.length;u--;)t.drawSingleLineMarker(e,c[u].toScreenRange(n),this.clazz,o)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){\"use strict\";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e(\"../range\").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.row<this.startRow||e.endRow>this.endRow)throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var i,r,o,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,n=this.end.column);for(var c=0;c<a.length;c++){if(i=a[c],-1==(r=i.range.compareStart(t,n)))return void e(null,t,n,s,l);if(o=e(null,i.start.row,i.start.column,s,l),(o=!o&&e(i.placeholder,i.start.row,i.start.column,s))||0===r)return;l=!i.sameRow,s=i.end.column}e(null,t,n,s,l)},this.getNextFoldTo=function(e,t){for(var n,i,r=0;r<this.folds.length;r++){if(n=this.folds[r],-1==(i=n.range.compareEnd(e,t)))return{fold:n,kind:\"after\"};if(0===i)return{fold:n,kind:\"inside\"}}return null},this.addRemoveChars=function(e,t,n){var i,r,o=this.getNextFoldTo(e,t);if(o)if(i=o.fold,\"inside\"==o.kind&&i.start.column!=t&&i.start.row!=e)window.console&&window.console.log(e,t,i);else if(i.start.row==e){r=this.folds;var s=r.indexOf(i);for(0===s&&(this.start.column+=n),s;s<r.length;s++){if(i=r[s],i.start.column+=n,!i.sameRow)return;i.end.column+=n}this.end.column+=n}},this.split=function(e,t){var n=this.getNextFoldTo(e,t);if(!n||\"inside\"==n.kind)return null;var r=n.fold,o=this.folds,s=this.foldData,a=o.indexOf(r),l=o[a-1];this.end.row=l.end.row,this.end.column=l.end.column,o=o.splice(a,o.length-a);var c=new i(s,o);return s.splice(s.indexOf(this)+1,0,c),c},this.merge=function(e){for(var t=e.folds,n=0;n<t.length;n++)this.addFold(t[n]);var i=this.foldData;i.splice(i.indexOf(e),1)},this.toString=function(){var e=[this.range.toString()+\": [\"];return this.folds.forEach(function(t){e.push(\"  \"+t.toString())}),e.push(\"]\"),e.join(\"\\n\")},this.idxToPosition=function(e){for(var t=0,n=0;n<this.folds.length;n++){var i=this.folds[n];if((e-=i.start.column-t)<0)return{row:i.start.row,column:i.start.column+e};if((e-=i.placeholder.length)<0)return i.start;t=i.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(i.prototype),t.FoldLine=i}),ace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){\"use strict\";var i=e(\"./range\").Range,r=i.comparePoints,o=function(){this.ranges=[]};(function(){this.comparePoints=r,this.pointIndex=function(e,t,n){for(var i=this.ranges,o=n||0;o<i.length;o++){var s=i[o],a=r(e,s.end);if(!(a>0)){var l=r(e,s.start);return 0===a?t&&0!==l?-o-2:o:l>0||0===l&&!t?o:-o-1}}return-o-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var i=this.pointIndex(e.end,t,n);return i<0?i=-i-1:i++,this.ranges.splice(n,i-n,e)},this.addList=function(e){for(var t=[],n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return r(e.start,t.start)});for(var n,i=t[0],o=1;o<t.length;o++){n=i,i=t[o];var s=r(n.end,i.start);s<0||(0!=s||n.isEmpty()||i.isEmpty())&&(r(n.end,i.end)<0&&(n.end.row=i.end.row,n.end.column=i.end.column),t.splice(o,1),e.push(i),i=n,o--)}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row<e)return[];var i=this.pointIndex({row:e,column:0});i<0&&(i=-i-1);var r=this.pointIndex({row:t,column:0},i);r<0&&(r=-r-1);for(var o=[],s=i;s<r;s++)o.push(n[s]);return o},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on(\"change\",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener(\"change\",this.onChange),this.session=null)},this.$onChange=function(e){if(\"insert\"==e.action)var t=e.start,n=e.end;else var n=e.start,t=e.end;for(var i=t.row,r=n.row,o=r-i,s=-t.column+n.column,a=this.ranges,l=0,c=a.length;l<c;l++){var u=a[l];if(!(u.end.row<i)){if(u.start.row>i)break;if(u.start.row==i&&u.start.column>=t.column&&(u.start.column==t.column&&this.$insertRight||(u.start.column+=s,u.start.row+=o)),u.end.row==i&&u.end.column>=t.column){if(u.end.column==t.column&&this.$insertRight)continue;u.end.column==t.column&&s>0&&l<c-1&&u.end.column>u.start.column&&u.end.column==a[l+1].start.column&&(u.end.column-=s),u.end.column+=s,u.end.row+=o}}}if(0!=o&&l<c)for(;l<c;l++){var u=a[l];u.start.row+=o,u.end.row+=o}}}).call(o.prototype),t.RangeList=o}),ace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/range_list\",\"ace/lib/oop\"],function(e,t,n){\"use strict\";function i(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}function r(e,t){i(e.start,t),i(e.end,t)}function o(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}function s(e,t){o(e.start,t),o(e.end,t)}var a=(e(\"../range\").Range,e(\"../range_list\").RangeList),l=e(\"../lib/oop\"),c=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};l.inherits(c,a),function(){this.toString=function(){return'\"'+this.placeholder+'\" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new c(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(!this.range.isEqual(e)){if(!this.range.containsRange(e))throw new Error(\"A fold can't intersect already existing fold\"+e.range+this.range);r(e,this.start);for(var t=e.start.row,n=e.start.column,i=0,o=-1;i<this.subFolds.length&&1==(o=this.subFolds[i].range.compare(t,n));i++);var s=this.subFolds[i];if(0==o)return s.addSubFold(e);for(var t=e.range.end.row,n=e.range.end.column,a=i,o=-1;a<this.subFolds.length&&1==(o=this.subFolds[a].range.compare(t,n));a++);this.subFolds[a];if(0==o)throw new Error(\"A fold can't intersect already existing fold\"+e.range+this.range);this.subFolds.splice(i,a-i,e);return e.setFoldLine(this.foldLine),e}},this.restoreRange=function(e){return s(e,this.start)}}.call(c.prototype)}),ace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"],function(e,t,n){\"use strict\";function i(){this.getFoldAt=function(e,t,n){var i=this.getFoldLine(e);if(!i)return null;for(var r=i.folds,o=0;o<r.length;o++){var s=r[o];if(s.range.contains(e,t)){if(1==n&&s.range.isEnd(e,t))continue;if(-1==n&&s.range.isStart(e,t))continue;return s}}},this.getFoldsInRange=function(e){var t=e.start,n=e.end,i=this.$foldData,r=[];t.column+=1,n.column-=1;for(var o=0;o<i.length;o++){var s=i[o].range.compareRange(e);if(2!=s){if(-2==s)break;for(var a=i[o].folds,l=0;l<a.length;l++){var c=a[l];if(-2==(s=c.range.compareRange(e)))break;if(2!=s){if(42==s)break;r.push(c)}}}}return t.column-=1,n.column+=1,r},this.getFoldsInRangeList=function(e){if(Array.isArray(e)){var t=[];e.forEach(function(e){t=t.concat(this.getFoldsInRange(e))},this)}else var t=this.getFoldsInRange(e);return t},this.getAllFolds=function(){for(var e=[],t=this.$foldData,n=0;n<t.length;n++)for(var i=0;i<t[n].folds.length;i++)e.push(t[n].folds[i]);return e},this.getFoldStringAt=function(e,t,n,i){if(!(i=i||this.getFoldLine(e)))return null;for(var r,o,s={end:{column:0}},a=0;a<i.folds.length;a++){o=i.folds[a];var l=o.range.compareEnd(e,t);if(-1==l){r=this.getLine(o.start.row).substring(s.end.column,o.start.column);break}if(0===l)return null;s=o}return r||(r=this.getLine(o.start.row).substring(s.end.column)),-1==n?r.substring(0,t-s.end.column):1==n?r.substring(t-s.end.column):r},this.getFoldLine=function(e,t){var n=this.$foldData,i=0;for(t&&(i=n.indexOf(t)),-1==i&&(i=0),i;i<n.length;i++){var r=n[i];if(r.start.row<=e&&r.end.row>=e)return r;if(r.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,i=0;for(t&&(i=n.indexOf(t)),-1==i&&(i=0),i;i<n.length;i++){var r=n[i];if(r.end.row>=e)return r}return null},this.getFoldedRowCount=function(e,t){for(var n=this.$foldData,i=t-e+1,r=0;r<n.length;r++){var o=n[r],s=o.end.row,a=o.start.row;if(s>=t){a<t&&(a>=e?i-=t-a:i=0);break}s>=e&&(i-=a>=e?s-a:s-e+1)}return i},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n,i=this.$foldData,r=!1;e instanceof s?n=e:(n=new s(t,e),n.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(n.range);var a=n.start.row,l=n.start.column,c=n.end.row,u=n.end.column;if(!(a<c||a==c&&l<=u-2))throw new Error(\"The range has to be at least 2 characters width\");var h=this.getFoldAt(a,l,1),d=this.getFoldAt(c,u,-1);if(h&&d==h)return h.addSubFold(n);h&&!h.range.isStart(a,l)&&this.removeFold(h),d&&!d.range.isEnd(c,u)&&this.removeFold(d);var f=this.getFoldsInRange(n.range);f.length>0&&(this.removeFolds(f),f.forEach(function(e){n.addSubFold(e)}));for(var p=0;p<i.length;p++){var m=i[p];if(c==m.start.row){m.addFold(n),r=!0;break}if(a==m.end.row){if(m.addFold(n),r=!0,!n.sameRow){var g=i[p+1];if(g&&g.start.row==c){m.merge(g);break}}break}if(c<=m.start.row)break}return r||(m=this.$addFoldLine(new o(this.$foldData,n))),this.$useWrapMode?this.$updateWrapData(m.start.row,m.start.row):this.$updateRowLengthCache(m.start.row,m.start.row),this.$modified=!0,this._signal(\"changeFold\",{data:n,action:\"add\"}),n},this.addFolds=function(e){e.forEach(function(e){this.addFold(e)},this)},this.removeFold=function(e){var t=e.foldLine,n=t.start.row,i=t.end.row,r=this.$foldData,o=t.folds;if(1==o.length)r.splice(r.indexOf(t),1);else if(t.range.isEnd(e.end.row,e.end.column))o.pop(),t.end.row=o[o.length-1].end.row,t.end.column=o[o.length-1].end.column;else if(t.range.isStart(e.start.row,e.start.column))o.shift(),t.start.row=o[0].start.row,t.start.column=o[0].start.column;else if(e.sameRow)o.splice(o.indexOf(e),1);else{var s=t.split(e.start.row,e.start.column);o=s.folds,o.shift(),s.start.row=o[0].start.row,s.start.column=o[0].start.column}this.$updating||(this.$useWrapMode?this.$updateWrapData(n,i):this.$updateRowLengthCache(n,i)),this.$modified=!0,this._signal(\"changeFold\",{data:e,action:\"remove\"})},this.removeFolds=function(e){for(var t=[],n=0;n<e.length;n++)t.push(e[n]);t.forEach(function(e){this.removeFold(e)},this),this.$modified=!0},this.expandFold=function(e){this.removeFold(e),e.subFolds.forEach(function(t){e.restoreRange(t),this.addFold(t)},this),e.collapseChildren>0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;if(null==e?(n=new r(0,0,this.getLength(),0),t=!0):n=\"number\"==typeof e?new r(e,0,e,this.getLine(e).length):\"row\"in e?r.fromPoints(e,e):e,i=this.getFoldsInRangeList(n),t)this.removeFolds(i);else for(var o=i;o.length;)this.expandFolds(o),o=this.getFoldsInRangeList(n);if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,i,r){null==i&&(i=e.start.row),null==r&&(r=0),null==t&&(t=e.end.row),null==n&&(n=this.getLine(t).length);var o=this.doc,s=\"\";return e.walk(function(e,t,n,a){if(!(t<i)){if(t==i){if(n<r)return;a=Math.max(r,a)}s+=null!=e?e:o.getLine(t).substring(a,n)}},t,n),s},this.getDisplayLine=function(e,t,n,i){var r=this.getFoldLine(e);if(r)return this.getFoldDisplayLine(r,e,t,n,i);var o;return o=this.doc.getLine(e),o.substring(i||0,t||o.length)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var n=t.folds.map(function(e){return e.clone()});return new o(e,n)})},this.toggleFold=function(e){var t,n,i=this.selection,r=i.getRange();if(r.isEmpty()){var o=r.start;if(t=this.getFoldAt(o.row,o.column))return void this.expandFold(t);(n=this.findMatchingBracket(o))?1==r.comparePoint(n)?r.end=n:(r.start=n,r.start.column++,r.end.column--):(n=this.findMatchingBracket({row:o.row,column:o.column+1}))?(1==r.comparePoint(n)?r.end=n:r.start=n,r.start.column++):r=this.getCommentFoldRange(o.row,o.column)||r}else{var s=this.getFoldsInRange(r);if(e&&s.length)return void this.expandFolds(s);1==s.length&&(t=s[0])}if(t||(t=this.getFoldAt(r.start.row,r.start.column)),t&&t.range.toString()==r.toString())return void this.expandFold(t);var a=\"...\";if(!r.isMultiLine()){if(a=this.getTextRange(r),a.length<4)return;a=a.trim().substring(0,2)+\"..\"}this.addFold(a,r)},this.getCommentFoldRange=function(e,t,n){var i=new a(this,e,t),o=i.getCurrentToken(),s=o.type;if(o&&/^comment|string/.test(s)){s=s.match(/comment|string/)[0],\"comment\"==s&&(s+=\"|doc-start\");var l=new RegExp(s),c=new r;if(1!=n){do{o=i.stepBackward()}while(o&&l.test(o.type));i.stepForward()}if(c.start.row=i.getCurrentTokenRow(),c.start.column=i.getCurrentTokenColumn()+2,i=new a(this,e,t),-1!=n){var u=-1;do{if(o=i.stepForward(),-1==u){var h=this.getState(i.$row);l.test(h)||(u=i.$row)}else if(i.$row>u)break}while(o&&l.test(o.type));o=i.stepBackward()}else o=i.getCurrentToken();return c.end.row=i.getCurrentTokenRow(),c.end.column=i.getCurrentTokenColumn()+o.value.length-2,c}},this.foldAll=function(e,t,n){void 0==n&&(n=1e5);var i=this.foldWidgets;if(i){t=t||this.getLength(),e=e||0;for(var r=e;r<t;r++)if(null==i[r]&&(i[r]=this.getFoldWidget(r)),\"start\"==i[r]){var o=this.getFoldWidgetRange(r);if(o&&o.isMultiLine()&&o.end.row<=t&&o.start.row>=e){r=o.end.row;try{var s=this.addFold(\"...\",o);s&&(s.collapseChildren=n)}catch(e){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle=\"markbegin\",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error(\"invalid fold style: \"+e+\"[\"+Object.keys(this.$foldStyles).join(\", \")+\"]\");if(this.$foldStyle!=e){this.$foldStyle=e,\"manual\"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){if(this.$foldMode!=e){if(this.$foldMode=e,this.off(\"change\",this.$updateFoldWidgets),this.off(\"tokenizerUpdate\",this.$tokenizerUpdateFoldWidgets),this._signal(\"changeAnnotation\"),!e||\"manual\"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on(\"change\",this.$updateFoldWidgets),this.on(\"tokenizerUpdate\",this.$tokenizerUpdateFoldWidgets)}},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};for(var i,r=e-1;r>=0;){var o=n[r];if(null==o&&(o=n[r]=this.getFoldWidget(r)),\"start\"==o){var s=this.getFoldWidgetRange(r);if(i||(i=s),s&&s.end.row>=e)break}r--}return{range:-1!==r&&s,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey};if(!this.$toggleFoldWidget(e,n)){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=\" ace_invalid\")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var n=this.getFoldWidget(e),i=this.getLine(e),r=\"end\"===n?-1:1,o=this.getFoldAt(e,-1===r?0:i.length,r);if(o)return t.children||t.all?this.removeFold(o):this.expandFold(o),o;var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(o=this.getFoldAt(s.start.row,s.start.column,1))&&s.isEqual(o.range))return this.removeFold(o),o;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold(\"...\",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(!n){var i=this.getParentFoldRangeData(t,!0);if(n=i.range||i.firstRange){t=n.start.row;var r=this.getFoldAt(t,this.getLine(t).length,1);r?this.removeFold(r):this.addFold(\"...\",n)}}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.foldWidgets[t]=null;else if(\"remove\"==e.action)this.foldWidgets.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e(\"../range\").Range,o=e(\"./fold_line\").FoldLine,s=e(\"./fold\").Fold,a=e(\"../token_iterator\").TokenIterator;t.Folding=i}),ace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"],function(e,t,n){\"use strict\";function i(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(\"\"==n)return null;var i=n.match(/([\\(\\[\\{])|([\\)\\]\\}])/);return i?i[1]?this.$findClosingBracket(i[1],e):this.$findOpeningBracket(i[2],e):null},this.getBracketRange=function(e){var t,n=this.getLine(e.row),i=!0,r=n.charAt(e.column-1),s=r&&r.match(/([\\(\\[\\{])|([\\)\\]\\}])/);if(s||(r=n.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\\(\\[\\{])|([\\)\\]\\}])/),i=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=o.fromPoints(e,a),i||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),i||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={\")\":\"(\",\"(\":\")\",\"]\":\"[\",\"[\":\"]\",\"{\":\"}\",\"}\":\"{\"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp(\"(\\\\.?\"+a.type.replace(\".\",\"\\\\.\").replace(\"rparen\",\".paren\").replace(/\\b(?:end)\\b/,\"(?:start|begin|end)\")+\")+\"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var u=c.charAt(l);if(u==i){if(0==(o-=1))return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else u==e&&(o+=1);l-=1}do{a=s.stepBackward()}while(a&&!n.test(a.type));if(null==a)break;c=a.value,l=c.length-1}return null}},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp(\"(\\\\.?\"+a.type.replace(\".\",\"\\\\.\").replace(\"lparen\",\".paren\").replace(/\\b(?:start|begin)\\b/,\"(?:start|begin|end)\")+\")+\"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,u=c.length;l<u;){var h=c.charAt(l);if(h==i){if(0==(o-=1))return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(o+=1);l+=1}do{a=s.stepForward()}while(a&&!n.test(a.type));if(null==a)break;l=0}return null}}}var r=e(\"../token_iterator\").TokenIterator,o=e(\"../range\").Range;t.BracketMatch=i}),ace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"],function(e,t,n){\"use strict\";var i=e(\"./lib/oop\"),r=e(\"./lib/lang\"),o=e(\"./bidihandler\").BidiHandler,s=e(\"./config\"),a=e(\"./lib/event_emitter\").EventEmitter,l=e(\"./selection\").Selection,c=e(\"./mode/text\").Mode,u=e(\"./range\").Range,h=e(\"./document\").Document,d=e(\"./background_tokenizer\").BackgroundTokenizer,f=e(\"./search_highlight\").SearchHighlight,p=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.id=\"session\"+ ++p.$uid,this.$foldData.toString=function(){return this.join(\"\\n\")},this.on(\"changeFold\",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),\"object\"==typeof e&&e.getLine||(e=new h(e)),this.$bidiHandler=new o(this),this.setDocument(e),this.selection=new l(this),s.resetOptions(this),this.setMode(t),s._signal(\"session\",this)};p.$uid=0,function(){function e(e){return!(e<4352)&&(e>=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}i.implement(this,a),this.setDocument=function(e){this.doc&&this.doc.removeListener(\"change\",this.$onChange),this.doc=e,e.on(\"change\",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){for(var n=0,i=e.length-1;n<=i;){var r=n+i>>1,o=e[r];if(t>o)n=r+1;else{if(!(t<o))return r;i=r-1}}return n-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){this.$modified=!0,this.$bidiHandler.onChange(e),this.$resetRowCache(e.start.row);var t=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||e.ignore||(this.$deltasDoc.push(e),t&&0!=t.length&&this.$deltasFold.push({action:\"removeFolds\",folds:t}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(e),this._signal(\"change\",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.setUndoManager(this.$undoManager),this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var n,i=this.bgTokenizer.getTokens(e),r=0;if(null==t){var o=i.length-1;r=this.getLine(e).length}else for(var o=0;o<i.length&&!((r+=i[o].value.length)>=t);o++);return(n=i[o])?(n.index=o,n.start=r-n.value.length,n):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:\"fold\",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:\"doc\",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:\"aceupdate\",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=r.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?r.stringRepeat(\" \",this.getTabSize()):\"\\t\"},this.setUseSoftTabs=function(e){this.setOption(\"useSoftTabs\",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption(\"tabSize\",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.setNavigateWithinSoftTabs=function(e){this.setOption(\"navigateWithinSoftTabs\",e)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption(\"overwrite\",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=\"\"),this.$decorations[e]+=\" \"+t,this._signal(\"changeBreakpoint\",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||\"\").replace(\" \"+t,\"\"),this._signal(\"changeBreakpoint\",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t<e.length;t++)this.$breakpoints[e[t]]=\"ace_breakpoint\";this._signal(\"changeBreakpoint\",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._signal(\"changeBreakpoint\",{})},this.setBreakpoint=function(e,t){void 0===t&&(t=\"ace_breakpoint\"),t?this.$breakpoints[e]=t:delete this.$breakpoints[e],this._signal(\"changeBreakpoint\",{})},this.clearBreakpoint=function(e){delete this.$breakpoints[e],this._signal(\"changeBreakpoint\",{})},this.addMarker=function(e,t,n,i){var r=this.$markerId++,o={range:e,type:n||\"line\",renderer:\"function\"==typeof n?n:null,clazz:t,inFront:!!i,id:r};return i?(this.$frontMarkers[r]=o,this._signal(\"changeFrontMarker\")):(this.$backMarkers[r]=o,this._signal(\"changeBackMarker\")),r},this.addDynamicMarker=function(e,t){if(e.update){var n=this.$markerId++;return e.id=n,e.inFront=!!t,t?(this.$frontMarkers[n]=e,this._signal(\"changeFrontMarker\")):(this.$backMarkers[n]=e,this._signal(\"changeBackMarker\")),e}},this.removeMarker=function(e){var t=this.$frontMarkers[e]||this.$backMarkers[e];if(t){var n=t.inFront?this.$frontMarkers:this.$backMarkers;t&&(delete n[e],this._signal(t.inFront?\"changeFrontMarker\":\"changeBackMarker\"))}},this.getMarkers=function(e){return e?this.$frontMarkers:this.$backMarkers},this.highlight=function(e){if(!this.$searchHighlight){var t=new f(null,\"ace_selected-word\",\"text\");this.$searchHighlight=this.addDynamicMarker(t)}this.$searchHighlight.setRegexp(e)},this.highlightLines=function(e,t,n,i){\"number\"!=typeof t&&(n=t,t=e),n||(n=\"ace_step\");var r=new u(e,0,t,1/0);return r.id=this.addMarker(r,n,\"fullLine\",i),r},this.setAnnotations=function(e){this.$annotations=e,this._signal(\"changeAnnotation\",{})},this.getAnnotations=function(){return this.$annotations||[]},this.clearAnnotations=function(){this.setAnnotations([])},this.$detectNewLine=function(e){var t=e.match(/^.*?(\\r?\\n)/m);this.$autoNewLine=t?t[1]:\"\\n\"},this.getWordRange=function(e,t){var n=this.getLine(e),i=!1;if(t>0&&(i=!!n.charAt(t-1).match(this.tokenRe)),i||(i=!!n.charAt(t).match(this.tokenRe)),i)var r=this.tokenRe;else if(/^\\s+$/.test(n.slice(t-1,t+1)))var r=/\\s/;else var r=this.nonTokenRe;var o=t;if(o>0){do{o--}while(o>=0&&n.charAt(o).match(r));o++}for(var s=t;s<n.length&&n.charAt(s).match(r);)s++;return new u(e,o,e,s)},this.getAWordRange=function(e,t){for(var n=this.getWordRange(e,t),i=this.getLine(n.end.row);i.charAt(n.end.column).match(/[ \\t]/);)n.end.column+=1;return n},this.setNewLineMode=function(e){this.doc.setNewLineMode(e)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.setUseWorker=function(e){this.setOption(\"useWorker\",e)},this.getUseWorker=function(){return this.$useWorker},this.onReloadTokenizer=function(e){var t=e.data;this.bgTokenizer.start(t.first),this._signal(\"tokenizerUpdate\",e)},this.$modes={},this.$mode=null,this.$modeId=null,this.setMode=function(e,t){if(e&&\"object\"==typeof e){if(e.getTokenizer)return this.$onChangeMode(e);var n=e,i=n.path}else i=e||\"ace/mode/text\";if(this.$modes[\"ace/mode/text\"]||(this.$modes[\"ace/mode/text\"]=new c),this.$modes[i]&&!n)return this.$onChangeMode(this.$modes[i]),void(t&&t());this.$modeId=i,s.loadModule([\"mode\",i],function(e){if(this.$modeId!==i)return t&&t();this.$modes[i]&&!n?this.$onChangeMode(this.$modes[i]):e&&e.Mode&&(e=new e.Mode(n),n||(this.$modes[i]=e,e.$id=i),this.$onChangeMode(e)),t&&t()}.bind(this)),this.$mode||this.$onChangeMode(this.$modes[\"ace/mode/text\"],!0)},this.$onChangeMode=function(e,t){if(t||(this.$modeId=e.$id),this.$mode!==e){this.$mode=e,this.$stopWorker(),this.$useWorker&&this.$startWorker();var n=e.getTokenizer();if(void 0!==n.addEventListener){var i=this.onReloadTokenizer.bind(this);n.addEventListener(\"update\",i)}if(this.bgTokenizer)this.bgTokenizer.setTokenizer(n);else{this.bgTokenizer=new d(n);var r=this;this.bgTokenizer.addEventListener(\"update\",function(e){r._signal(\"tokenizerUpdate\",e)})}this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=e.tokenRe,this.nonTokenRe=e.nonTokenRe,t||(e.attachToSession&&e.attachToSession(this),this.$options.wrapMethod.set.call(this,this.$wrapMethod),this.$setFolding(e.foldingRules),this.bgTokenizer.start(0),this._emit(\"changeMode\"))}},this.$stopWorker=function(){this.$worker&&(this.$worker.terminate(),this.$worker=null)},this.$startWorker=function(){try{this.$worker=this.$mode.createWorker(this)}catch(e){s.warn(\"Could not load worker\",e),this.$worker=null}},this.getMode=function(){return this.$mode},this.$scrollTop=0,this.setScrollTop=function(e){this.$scrollTop===e||isNaN(e)||(this.$scrollTop=e,this._signal(\"changeScrollTop\",e))},this.getScrollTop=function(){return this.$scrollTop},this.$scrollLeft=0,this.setScrollLeft=function(e){this.$scrollLeft===e||isNaN(e)||(this.$scrollLeft=e,this._signal(\"changeScrollLeft\",e))},this.getScrollLeft=function(){return this.$scrollLeft},this.getScreenWidth=function(){return this.$computeWidth(),this.lineWidgets?Math.max(this.getLineWidgetMaxWidth(),this.screenWidth):this.screenWidth},this.getLineWidgetMaxWidth=function(){if(null!=this.lineWidgetsWidth)return this.lineWidgetsWidth;var e=0;return this.lineWidgets.forEach(function(t){t&&t.screenWidth>e&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),n=this.$rowLengthCache,i=0,r=0,o=this.$foldData[r],s=o?o.start.row:1/0,a=t.length,l=0;l<a;l++){if(l>s){if((l=o.end.row+1)>=a)break;o=this.$foldData[r++],s=o?o.start.row:1/0}null==n[l]&&(n[l]=this.$getStringScreenWidth(t[l])[0]),n[l]>i&&(i=n[l])}this.screenWidth=i}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=null,i=e.length-1;-1!=i;i--){var r=e[i];\"doc\"==r.group?(this.doc.revertDeltas(r.deltas),n=this.$getUndoSelection(r.deltas,!0,n)):r.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=null,i=0;i<e.length;i++){var r=e[i];\"doc\"==r.group&&(this.doc.applyDeltas(r.deltas),n=this.$getUndoSelection(r.deltas,!1,n))}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n}},this.setUndoSelect=function(e){this.$undoSelect=e},this.$getUndoSelection=function(e,t,n){function i(e){return t?\"insert\"!==e.action:\"insert\"===e.action}var r,o,s=e[0];i(s)?r=u.fromPoints(s.start,s.end):r=u.fromPoints(s.start,s.start);for(var a=1;a<e.length;a++)s=e[a],i(s)?(o=s.start,-1==r.compare(o.row,o.column)&&r.setStart(o),o=s.end,1==r.compare(o.row,o.column)&&r.setEnd(o),!0):(o=s.start,-1==r.compare(o.row,o.column)&&(r=u.fromPoints(s.start,s.start)),!1);if(null!=n){0===u.comparePoints(n.start,r.start)&&(n.start.column+=r.end.column-r.start.column,n.end.column+=r.end.column-r.start.column);var l=n.compareRange(r);1==l?r.setStart(n.start):-1==l&&r.setEnd(n.end)}return r},this.replace=function(e,t){return this.doc.replace(e,t)},this.moveText=function(e,t,n){var i=this.getTextRange(e),r=this.getFoldsInRange(e),o=u.fromPoints(t,t);if(!n){this.remove(e);var s=e.start.row-e.end.row,a=s?-e.end.column:e.start.column-e.end.column;a&&(o.start.row==e.end.row&&o.start.column>e.end.column&&(o.start.column+=a),o.end.row==e.end.row&&o.end.column>e.end.column&&(o.end.column+=a)),s&&o.start.row>=e.end.row&&(o.start.row+=s,o.end.row+=s)}if(o.end=this.insert(o.start,i),r.length){var l=e.start,c=o.start,s=c.row-l.row,a=c.column-l.column;this.addFolds(r.map(function(e){return e=e.clone(),e.start.row==l.row&&(e.start.column+=a),e.end.row==l.row&&(e.end.column+=a),e.start.row+=s,e.end.row+=s,e}))}return o},this.indentRows=function(e,t,n){n=n.replace(/\\t/g,this.getTabString());for(var i=e;i<=t;i++)this.doc.insertInLine({row:i,column:0},n)},this.outdentRows=function(e){for(var t=e.collapseRows(),n=new u(0,0,0,0),i=this.getTabSize(),r=t.start.row;r<=t.end.row;++r){var o=this.getLine(r);n.start.row=r,n.end.row=r;for(var s=0;s<i&&\" \"==o.charAt(s);++s);s<i&&\"\\t\"==o.charAt(s)?(n.start.column=s,n.end.column=s+1):(n.start.column=0,n.end.column=s),this.remove(n)}},this.$moveLines=function(e,t,n){if(e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t),n<0){var i=this.getRowFoldStart(e+n);if(i<0)return 0;var r=i-e}else if(n>0){var i=this.getRowFoldEnd(t+n);if(i>this.doc.getLength()-1)return 0;var r=i-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var r=t-e+1}var o=new u(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(o).map(function(e){return e=e.clone(),e.start.row+=r,e.end.row+=r,e}),a=0==n?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+r,a),s.length&&this.addFolds(s),r},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal(\"changeWrapMode\")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal(\"changeWrapMode\"))},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var i=this.$constrainWrapLimit(e,n.min,n.max);return i!=this.$wrapLimit&&i>1&&(this.$wrapLimit=i,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal(\"changeWrapLimit\")),!0)},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,i=e.start,r=e.end,o=i.row,s=r.row,a=s-o,l=null;if(this.$updating=!0,0!=a)if(\"remove\"===n){this[t?\"$wrapData\":\"$rowLengthCache\"].splice(o,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var u=this.getFoldLine(r.row),h=0;if(u){u.addRemoveChars(r.row,r.column,i.column-r.column),u.shiftRow(-a);var d=this.getFoldLine(o);d&&d!==u&&(d.merge(u),u=d),h=c.indexOf(u)+1}for(h;h<c.length;h++){var u=c[h];u.start.row>=r.row&&u.shiftRow(-a)}s=o}else{var f=Array(a);f.unshift(o,0);var p=t?this.$wrapData:this.$rowLengthCache;p.splice.apply(p,f);var c=this.$foldData,u=this.getFoldLine(o),h=0;if(u){var m=u.range.compareInside(i.row,i.column);0==m?(u=u.split(i.row,i.column))&&(u.shiftRow(a),u.addRemoveChars(s,0,r.column-i.column)):-1==m&&(u.addRemoveChars(o,0,r.column-i.column),u.shiftRow(a)),h=c.indexOf(u)+1}for(h;h<c.length;h++){var u=c[h];u.start.row>=o&&u.shiftRow(a)}}else{a=Math.abs(e.start.column-e.end.column),\"remove\"===n&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var u=this.getFoldLine(o);u&&u.addRemoveChars(o,i.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error(\"doc.getLength() and $wrapData.length have to be the same!\"),this.$updating=!1,t?this.$updateWrapData(o,s):this.$updateRowLengthCache(o,s),l},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,i){var r,o,s=this.doc.getAllLines(),a=this.getTabSize(),l=this.$wrapData,c=this.$wrapLimit,u=e;for(i=Math.min(i,s.length-1);u<=i;)o=this.getFoldLine(u,o),o?(r=[],o.walk(function(e,i,o,a){var l;if(null!=e){l=this.$getDisplayTokens(e,r.length),l[0]=t;for(var c=1;c<l.length;c++)l[c]=n}else l=this.$getDisplayTokens(s[i].substring(a,o),r.length);r=r.concat(l)}.bind(this),o.end.row,s[o.end.row].length+1),l[o.start.row]=this.$computeWrapSplits(r,c,a),u=o.end.row+1):(r=this.$getDisplayTokens(s[u]),l[u]=this.$computeWrapSplits(r,c,a),u++)};var t=3,n=4,o=10,l=11,h=12;this.$computeWrapSplits=function(e,i,r){function s(){var t=0;if(0===g)return t;if(m)for(var n=0;n<e.length;n++){var i=e[n];if(i==o)t+=1;else{if(i!=l){if(i==h)continue;break}t+=r}}return p&&!1!==m&&(t+=r),Math.min(t,g)}function a(t){var n=e.slice(d,t),i=n.length;n.join(\"\").replace(/12/g,function(){i-=1}).replace(/2/g,function(){i-=1}),c.length||(v=s(),c.indent=v),f+=i,c.push(f),d=t}if(0==e.length)return[];for(var c=[],u=e.length,d=0,f=0,p=this.$wrapAsCode,m=this.$indentedSoftWrap,g=i<=Math.max(2*r,8)||!1===m?0:Math.floor(i/2),v=0;u-d>i-v;){var y=d+i-v;if(e[y-1]>=o&&e[y]>=o)a(y);else if(e[y]!=t&&e[y]!=n){for(var b=Math.max(y-(i-(i>>2)),d-1);y>b&&e[y]<t;)y--;if(p){for(;y>b&&e[y]<t;)y--;for(;y>b&&9==e[y];)y--}else for(;y>b&&e[y]<o;)y--;y>b?a(++y):(y=d+i,2==e[y]&&y--,a(y-v))}else{for(y;y!=d-1&&e[y]!=t;y--);if(y>d){a(y);continue}for(y=d+i;y<e.length&&e[y]==n;y++);if(y==e.length)break;a(y)}}return c},this.$getDisplayTokens=function(t,n){var i,r=[];n=n||0;for(var s=0;s<t.length;s++){var a=t.charCodeAt(s);if(9==a){i=this.getScreenTabSize(r.length+n),r.push(l);for(var c=1;c<i;c++)r.push(h)}else 32==a?r.push(o):a>39&&a<48||a>57&&a<64?r.push(9):a>=4352&&e(a)?r.push(1,2):r.push(1)}return r},this.$getStringScreenWidth=function(t,n,i){if(0==n)return[0,0];null==n&&(n=1/0),i=i||0;var r,o;for(o=0;o<t.length&&(r=t.charCodeAt(o),9==r?i+=this.getScreenTabSize(i):r>=4352&&e(r)?i+=2:i+=1,!(i>n));o++);return[i,o]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]<t.column?n.indent:0}return 0},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:void 0},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t,n){if(e<0)return{row:0,column:0};var i,r,o=0,s=0,a=0,l=0,c=this.$screenRowCache,u=this.$getRowCacheIndex(c,e),h=c.length;if(h&&u>=0)var a=c[u],o=this.$docRowCache[u],d=e>c[h-1];else var d=!h;for(var f=this.getLength()-1,p=this.getNextFoldLine(o),m=p?p.start.row:1/0;a<=e&&(l=this.getRowLength(o),!(a+l>e||o>=f));)a+=l,++o>m&&(o=p.end.row+1,p=this.getNextFoldLine(o,p),m=p?p.start.row:1/0),d&&(this.$docRowCache.push(o),this.$screenRowCache.push(a));if(p&&p.start.row<=o)i=this.getFoldDisplayLine(p),o=p.start.row;else{if(a+l<=e||o>f)return{row:f,column:this.getLine(f).length};i=this.getLine(o),p=null}var g=0,v=Math.floor(e-a);if(this.$useWrapMode){var y=this.$wrapData[o];y&&(r=y[v],v>0&&y.length&&(g=y.indent,s=y[v-1]||y[y.length-1],i=i.substring(s)))}return void 0!==n&&this.$bidiHandler.isBidiRow(a+v,o,v)&&(t=this.$bidiHandler.offsetToCol(n)),s+=this.$getStringScreenWidth(i,t-g)[1],this.$useWrapMode&&s>=r&&(s=r-1),p?p.idxToPosition(s):{row:o,column:s}},this.documentToScreenPosition=function(e,t){if(void 0===t)var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var i=0,r=null,o=null;(o=this.getFoldAt(e,t,1))&&(e=o.start.row,t=o.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),u=l.length;if(u&&c>=0)var a=l[c],i=this.$screenRowCache[c],h=e>l[u-1];else var h=!u;for(var d=this.getNextFoldLine(a),f=d?d.start.row:1/0;a<e;){if(a>=f){if((s=d.end.row+1)>e)break;d=this.getNextFoldLine(s,d),f=d?d.start.row:1/0}else s=a+1;i+=this.getRowLength(a),a=s,h&&(this.$docRowCache.push(a),this.$screenRowCache.push(i))}var p=\"\";d&&a>=f?(p=this.getFoldDisplayLine(d,e,t),r=d.start.row):(p=this.getLine(e).substring(0,t),r=e);var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){for(var v=0;p.length>=g[v];)i++,v++;p=p.substring(g[v-1]||0,p.length),m=v>0?g.indent:0}}return{row:i,column:m+this.$getStringScreenWidth(p)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var n=this.$wrapData.length,i=0,r=0,t=this.$foldData[r++],o=t?t.start.row:1/0;i<n;){var s=this.$wrapData[i];e+=s?s.length+1:1,i++,i>o&&(i=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,r=0;r<a.length;r++)t=a[r],e-=t.end.row-t.start.row}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){this.$enableVarChar&&(this.$getStringScreenWidth=function(t,n,i){if(0===n)return[0,0];n||(n=1/0),i=i||0;var r,o;for(o=0;o<t.length&&(r=t.charAt(o),!((i+=\"\\t\"===r?this.getScreenTabSize(i):e.getCharacterWidth(r))>n));o++);return[i,o]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=e}.call(p.prototype),e(\"./edit_session/folding\").Folding.call(p.prototype),e(\"./edit_session/bracket_match\").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,\"session\",{wrap:{set:function(e){if(e&&\"off\"!=e?\"free\"==e?e=!0:\"printMargin\"==e?e=-1:\"string\"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t=\"number\"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?\"printMargin\":this.getWrapLimitRange().min?this.$wrap:\"free\":\"off\"},handlesSet:!0},wrapMethod:{set:function(e){(e=\"auto\"==e?\"text\"!=this.$mode.type:\"text\"!=e)!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:\"auto\"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal(\"changeBreakpoint\")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal(\"changeTabSize\"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},overwrite:{set:function(e){this._signal(\"changeOverwrite\")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),ace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"],function(e,t,n){\"use strict\";function i(e,t){function n(e){return/\\w/.test(e)||t.regExp?\"\\\\b\":\"\"}return n(e[0])+e+n(e[e.length-1])}var r=e(\"./lib/lang\"),o=e(\"./lib/oop\"),s=e(\"./range\").Range,a=function(){this.$options={}};(function(){this.set=function(e){return o.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var i=null;return n.forEach(function(e,n,r,o){return i=new s(e,n,r,o),!(n==o&&t.start&&t.start.start&&0!=t.skipCurrent&&i.isEqual(t.start))||(i=null,!1)}),i},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,u=i.length-c;e:for(var h=a.offset||0;h<=u;h++){for(var d=0;d<c;d++)if(-1==i[h+d].search(a[d]))continue e;var f=i[h],p=i[h+c-1],m=f.length-f.match(a[0])[0].length,g=p.match(a[c-1])[0].length;l&&l.end.row===h&&l.end.column>m||(o.push(l=new s(h,m,h+c-1,g)),c>2&&(h=h+c-2))}}else for(var v=0;v<i.length;v++)for(var y=r.getMatchOffsets(i[v],a),d=0;d<y.length;d++){var b=y[d];o.push(new s(v,b.offset,v,b.offset+b.length))}if(n){for(var w=n.start.column,C=n.start.column,v=0,d=o.length-1;v<d&&o[v].start.column<w&&o[v].start.row==n.start.row;)v++;for(;v<d&&o[d].end.column>C&&o[d].end.row==n.end.row;)d--;for(o=o.slice(v,d+1),v=0,d=o.length;v<d;v++)o[v].start.row+=n.start.row,o[v].end.row+=n.start.row}return o},this.replace=function(e,t){var n=this.$options,i=this.$assembleRegExp(n);if(n.$isMultiLine)return t;if(i){var r=i.exec(e);if(!r||r[0].length!=e.length)return null;if(t=e.replace(i,t),n.preserveCase){t=t.split(\"\");for(var o=Math.min(e.length,e.length);o--;){var s=e[o];s&&s.toLowerCase()!=s?t[o]=t[o].toUpperCase():t[o]=t[o].toLowerCase()}t=t.join(\"\")}return t}},this.$assembleRegExp=function(e,t){if(e.needle instanceof RegExp)return e.re=e.needle;var n=e.needle;if(!e.needle)return e.re=!1;e.regExp||(n=r.escapeRegExp(n)),e.wholeWord&&(n=i(n,e));var o=e.caseSensitive?\"gm\":\"gmi\";if(e.$isMultiLine=!t&&/[\\n\\r]/.test(n),e.$isMultiLine)return e.re=this.$assembleMultilineRegExp(n,o);try{var s=new RegExp(n,o)}catch(e){s=!1}return e.re=s},this.$assembleMultilineRegExp=function(e,t){for(var n=e.replace(/\\r\\n|\\r|\\n/g,\"$\\n^\").split(\"\\n\"),i=[],r=0;r<n.length;r++)try{i.push(new RegExp(n[r],t))}catch(e){return!1}return i},this.$matchIterator=function(e,t){var n=this.$assembleRegExp(t);if(!n)return!1;var i=1==t.backwards,r=0!=t.skipCurrent,o=t.range,s=t.start;s||(s=o?o[i?\"end\":\"start\"]:e.selection.getRange()),s.start&&(s=s[r!=i?\"end\":\"start\"]);var a=o?o.start.row:0,l=o?o.end.row:e.getLength()-1;if(i)var c=function(e){var n=s.row;if(!h(n,s.column,e)){for(n--;n>=a;n--)if(h(n,Number.MAX_VALUE,e))return;if(0!=t.wrap)for(n=l,a=s.row;n>=a;n--)if(h(n,Number.MAX_VALUE,e))return}};else var c=function(e){var n=s.row;if(!h(n,s.column,e)){for(n+=1;n<=l;n++)if(h(n,0,e))return;if(0!=t.wrap)for(n=a,l=s.row;n<=l;n++)if(h(n,0,e))return}};if(t.$isMultiLine)var u=n.length,h=function(t,r,o){var s=i?t-u+1:t;if(!(s<0)){var a=e.getLine(s),l=a.search(n[0]);if(!(!i&&l<r||-1===l)){for(var c=1;c<u;c++)if(a=e.getLine(s+c),-1==a.search(n[c]))return;var h=a.match(n[u-1])[0].length;if(!(i&&h>r))return!!o(s,l,s+u-1,h)||void 0}}};else if(i)var h=function(t,i,r){var o,s=e.getLine(t),a=[],l=0;for(n.lastIndex=0;o=n.exec(s);){var c=o[0].length;if(l=o.index,!c){if(l>=s.length)break;n.lastIndex=l+=1}if(o.index+c>i)break;a.push(o.index,c)}for(var u=a.length-1;u>=0;u-=2){var h=a[u-1],c=a[u];if(r(t,h,t,h+c))return!0}};else var h=function(t,i,r){var o,s=e.getLine(t),a=i;for(n.lastIndex=i;o=n.exec(s);){var l=o[0].length;if(a=o.index,r(t,a,t,a+l))return!0;if(!l&&(n.lastIndex=a+=1,a>=s.length))return!1}};return{forEach:c}}}).call(a.prototype),t.Search=a}),ace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"],function(e,t,n){\"use strict\";function i(e,t){this.platform=t||(s.isMac?\"mac\":\"win\"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function r(e,t){i.call(this,e,t),this.$singleCommand=!1}var o=e(\"../lib/keys\"),s=e(\"../lib/useragent\"),a=o.KEY_MODS;r.prototype=i.prototype,function(){function e(e){return\"object\"==typeof e&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(\"string\"==typeof e?e:e.name);e=this.commands[n],t||delete this.commands[n];var i=this.commandKeyBinding;for(var r in i){var o=i[r];if(o==e)delete i[r];else if(Array.isArray(o)){var s=o.indexOf(e);-1!=s&&(o.splice(s,1),1==o.length&&(i[r]=o[0]))}}},this.bindKey=function(e,t,n){if(\"object\"==typeof e&&e&&(void 0==n&&(n=e.position),e=e[this.platform]),e)return\"function\"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split(\"|\").forEach(function(e){var i=\"\";if(-1!=e.indexOf(\" \")){var r=e.split(/\\s+/);e=r.pop(),r.forEach(function(e){var t=this.parseKeys(e),n=a[t.hashId]+t.key;i+=(i?\" \":\"\")+n,this._addCommandToBinding(i,\"chainKeys\")},this),i+=\" \"}var o=this.parseKeys(e),s=a[o.hashId]+o.key;this._addCommandToBinding(i+s,t,n)},this)},this._addCommandToBinding=function(t,n,i){var r,o=this.commandKeyBinding;if(n)if(!o[t]||this.$singleCommand)o[t]=n;else{Array.isArray(o[t])?-1!=(r=o[t].indexOf(n))&&o[t].splice(r,1):o[t]=[o[t]],\"number\"!=typeof i&&(i=e(n));var s=o[t];for(r=0;r<s.length;r++){var a=s[r],l=e(a);if(l>i)break}s.splice(r,0,n)}else delete o[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(n){if(\"string\"==typeof n)return this.bindKey(n,t);\"function\"==typeof n&&(n={exec:n}),\"object\"==typeof n&&(n.name||(n.name=t),this.addCommand(n))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(e){return e}),n=t.pop(),i=o[n];if(o.FUNCTION_KEYS[i])n=o.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(1==t.length&&\"shift\"==t[0])return{key:n.toUpperCase(),hashId:-1}}for(var r=0,s=t.length;s--;){var a=o.KEY_MODS[t[s]];if(null==a)return\"undefined\"!=typeof console&&console.error(\"invalid modifier \"+t[s]+\" in \"+e),!1;r|=a}return{key:n,hashId:r}},this.findKeyCommand=function(e,t){var n=a[e]+t;return this.commandKeyBinding[n]},this.handleKeyboard=function(e,t,n,i){if(!(i<0)){var r=a[t]+n,o=this.commandKeyBinding[r];return e.$keyChain&&(e.$keyChain+=\" \"+r,o=this.commandKeyBinding[e.$keyChain]||o),!o||\"chainKeys\"!=o&&\"chainKeys\"!=o[o.length-1]?(e.$keyChain&&(t&&4!=t||1!=n.length?(-1==t||i>0)&&(e.$keyChain=\"\"):e.$keyChain=e.$keyChain.slice(0,-r.length-1)),{command:o}):(e.$keyChain=e.$keyChain||r,{command:\"null\"})}},this.getStatusText=function(e,t){return t.$keyChain||\"\"}}.call(i.prototype),t.HashHandler=i,t.MultiHashHandler=r}),ace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"],function(e,t,n){\"use strict\";var i=e(\"../lib/oop\"),r=e(\"../keyboard/hash_handler\").MultiHashHandler,o=e(\"../lib/event_emitter\").EventEmitter,s=function(e,t){r.call(this,t,e),this.byName=this.commands,this.setDefaultHandler(\"exec\",function(e){return e.command.exec(e.editor,e.args||{})})};i.inherits(s,r),function(){i.implement(this,o),this.exec=function(e,t,n){if(Array.isArray(e)){for(var i=e.length;i--;)if(this.exec(e[i],t,n))return!0;return!1}if(\"string\"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(e.isAvailable&&!e.isAvailable(t))return!1;var r={editor:t,command:e,args:n};return r.returnValue=this._emit(\"exec\",r),this._signal(\"afterExec\",r),!1!==r.returnValue},this.toggleRecording=function(e){if(!this.$inReplay)return e&&e._emit(\"changeStatus\"),this.recording?(this.macro.pop(),this.removeEventListener(\"exec\",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on(\"exec\",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){\"string\"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return\"string\"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(s.prototype),t.CommandManager=s}),ace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"],function(e,t,n){\"use strict\";function i(e,t){return{win:e,mac:t}}var r=e(\"../lib/lang\"),o=e(\"../config\"),s=e(\"../range\").Range;t.commands=[{name:\"showSettingsMenu\",bindKey:i(\"Ctrl-,\",\"Command-,\"),exec:function(e){o.loadModule(\"ace/ext/settings_menu\",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:\"goToNextError\",bindKey:i(\"Alt-E\",\"F4\"),exec:function(e){o.loadModule(\"ace/ext/error_marker\",function(t){t.showErrorMarker(e,1)})},scrollIntoView:\"animate\",readOnly:!0},{name:\"goToPreviousError\",bindKey:i(\"Alt-Shift-E\",\"Shift-F4\"),exec:function(e){o.loadModule(\"ace/ext/error_marker\",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:\"animate\",readOnly:!0},{name:\"selectall\",bindKey:i(\"Ctrl-A\",\"Command-A\"),exec:function(e){e.selectAll()},readOnly:!0},{name:\"centerselection\",bindKey:i(null,\"Ctrl-L\"),exec:function(e){e.centerSelection()},readOnly:!0},{name:\"gotoline\",bindKey:i(\"Ctrl-L\",\"Command-L\"),exec:function(e){var t=parseInt(prompt(\"Enter line number:\"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:\"fold\",bindKey:i(\"Alt-L|Ctrl-F1\",\"Command-Alt-L|Command-F1\"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:\"forEach\",scrollIntoView:\"center\",readOnly:!0},{name:\"unfold\",bindKey:i(\"Alt-Shift-L|Ctrl-Shift-F1\",\"Command-Alt-Shift-L|Command-Shift-F1\"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:\"forEach\",scrollIntoView:\"center\",readOnly:!0},{name:\"toggleFoldWidget\",bindKey:i(\"F2\",\"F2\"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:\"forEach\",scrollIntoView:\"center\",readOnly:!0},{name:\"toggleParentFoldWidget\",bindKey:i(\"Alt-F2\",\"Alt-F2\"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:\"forEach\",scrollIntoView:\"center\",readOnly:!0},{name:\"foldall\",bindKey:i(null,\"Ctrl-Command-Option-0\"),exec:function(e){e.session.foldAll()},scrollIntoView:\"center\",readOnly:!0},{name:\"foldOther\",bindKey:i(\"Alt-0\",\"Command-Option-0\"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:\"center\",readOnly:!0},{name:\"unfoldall\",bindKey:i(\"Alt-Shift-0\",\"Command-Option-Shift-0\"),exec:function(e){e.session.unfold()},scrollIntoView:\"center\",readOnly:!0},{name:\"findnext\",bindKey:i(\"Ctrl-K\",\"Command-G\"),exec:function(e){e.findNext()},multiSelectAction:\"forEach\",scrollIntoView:\"center\",readOnly:!0},{name:\"findprevious\",bindKey:i(\"Ctrl-Shift-K\",\"Command-Shift-G\"),exec:function(e){e.findPrevious()},multiSelectAction:\"forEach\",scrollIntoView:\"center\",readOnly:!0},{name:\"selectOrFindNext\",bindKey:i(\"Alt-K\",\"Ctrl-G\"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:\"selectOrFindPrevious\",bindKey:i(\"Alt-Shift-K\",\"Ctrl-Shift-G\"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:\"find\",bindKey:i(\"Ctrl-F\",\"Command-F\"),exec:function(e){o.loadModule(\"ace/ext/searchbox\",function(t){t.Search(e)})},readOnly:!0},{name:\"overwrite\",bindKey:\"Insert\",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:\"selecttostart\",bindKey:i(\"Ctrl-Shift-Home\",\"Command-Shift-Home|Command-Shift-Up\"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:\"forEach\",readOnly:!0,scrollIntoView:\"animate\",aceCommandGroup:\"fileJump\"},{name:\"gotostart\",bindKey:i(\"Ctrl-Home\",\"Command-Home|Command-Up\"),exec:function(e){e.navigateFileStart()},multiSelectAction:\"forEach\",readOnly:!0,scrollIntoView:\"animate\",aceCommandGroup:\"fileJump\"},{name:\"selectup\",bindKey:i(\"Shift-Up\",\"Shift-Up|Ctrl-Shift-P\"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"golineup\",bindKey:i(\"Up\",\"Up|Ctrl-P\"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"selecttoend\",bindKey:i(\"Ctrl-Shift-End\",\"Command-Shift-End|Command-Shift-Down\"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:\"forEach\",readOnly:!0,scrollIntoView:\"animate\",aceCommandGroup:\"fileJump\"},{name:\"gotoend\",bindKey:i(\"Ctrl-End\",\"Command-End|Command-Down\"),exec:function(e){e.navigateFileEnd()},multiSelectAction:\"forEach\",readOnly:!0,scrollIntoView:\"animate\",aceCommandGroup:\"fileJump\"},{name:\"selectdown\",bindKey:i(\"Shift-Down\",\"Shift-Down|Ctrl-Shift-N\"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"golinedown\",bindKey:i(\"Down\",\"Down|Ctrl-N\"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"selectwordleft\",bindKey:i(\"Ctrl-Shift-Left\",\"Option-Shift-Left\"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"gotowordleft\",bindKey:i(\"Ctrl-Left\",\"Option-Left\"),exec:function(e){e.navigateWordLeft()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"selecttolinestart\",bindKey:i(\"Alt-Shift-Left\",\"Command-Shift-Left|Ctrl-Shift-A\"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"gotolinestart\",bindKey:i(\"Alt-Left|Home\",\"Command-Left|Home|Ctrl-A\"),exec:function(e){e.navigateLineStart()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"selectleft\",bindKey:i(\"Shift-Left\",\"Shift-Left|Ctrl-Shift-B\"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"gotoleft\",bindKey:i(\"Left\",\"Left|Ctrl-B\"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"selectwordright\",bindKey:i(\"Ctrl-Shift-Right\",\"Option-Shift-Right\"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"gotowordright\",bindKey:i(\"Ctrl-Right\",\"Option-Right\"),exec:function(e){e.navigateWordRight()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"selecttolineend\",bindKey:i(\"Alt-Shift-Right\",\"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"gotolineend\",bindKey:i(\"Alt-Right|End\",\"Command-Right|End|Ctrl-E\"),exec:function(e){e.navigateLineEnd()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"selectright\",bindKey:i(\"Shift-Right\",\"Shift-Right\"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"gotoright\",bindKey:i(\"Right\",\"Right|Ctrl-F\"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"selectpagedown\",bindKey:\"Shift-PageDown\",exec:function(e){e.selectPageDown()},readOnly:!0},{name:\"pagedown\",bindKey:i(null,\"Option-PageDown\"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:\"gotopagedown\",bindKey:i(\"PageDown\",\"PageDown|Ctrl-V\"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:\"selectpageup\",bindKey:\"Shift-PageUp\",exec:function(e){e.selectPageUp()},readOnly:!0},{name:\"pageup\",bindKey:i(null,\"Option-PageUp\"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:\"gotopageup\",bindKey:\"PageUp\",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:\"scrollup\",bindKey:i(\"Ctrl-Up\",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:\"scrolldown\",bindKey:i(\"Ctrl-Down\",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:\"selectlinestart\",bindKey:\"Shift-Home\",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"selectlineend\",bindKey:\"Shift-End\",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"togglerecording\",bindKey:i(\"Ctrl-Alt-E\",\"Command-Option-E\"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:\"replaymacro\",bindKey:i(\"Ctrl-Shift-E\",\"Command-Shift-E\"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:\"jumptomatching\",bindKey:i(\"Ctrl-P\",\"Ctrl-P\"),exec:function(e){e.jumpToMatching()},multiSelectAction:\"forEach\",scrollIntoView:\"animate\",readOnly:!0},{name:\"selecttomatching\",bindKey:i(\"Ctrl-Shift-P\",\"Ctrl-Shift-P\"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:\"forEach\",scrollIntoView:\"animate\",readOnly:!0},{name:\"expandToMatching\",bindKey:i(\"Ctrl-Shift-M\",\"Ctrl-Shift-M\"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:\"forEach\",scrollIntoView:\"animate\",readOnly:!0},{name:\"passKeysToBrowser\",bindKey:i(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:\"copy\",exec:function(e){},readOnly:!0},{name:\"cut\",exec:function(e){var t=e.getSelectionRange();e._emit(\"cut\",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:\"cursor\",multiSelectAction:\"forEach\"},{name:\"paste\",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:\"cursor\"},{name:\"removeline\",bindKey:i(\"Ctrl-D\",\"Command-D\"),exec:function(e){e.removeLines()},scrollIntoView:\"cursor\",multiSelectAction:\"forEachLine\"},{name:\"duplicateSelection\",bindKey:i(\"Ctrl-Shift-D\",\"Command-Shift-D\"),exec:function(e){e.duplicateSelection()},scrollIntoView:\"cursor\",multiSelectAction:\"forEach\"},{name:\"sortlines\",bindKey:i(\"Ctrl-Alt-S\",\"Command-Alt-S\"),exec:function(e){e.sortLines()},scrollIntoView:\"selection\",multiSelectAction:\"forEachLine\"},{name:\"togglecomment\",bindKey:i(\"Ctrl-/\",\"Command-/\"),exec:function(e){e.toggleCommentLines()},multiSelectAction:\"forEachLine\",scrollIntoView:\"selectionPart\"},{name:\"toggleBlockComment\",bindKey:i(\"Ctrl-Shift-/\",\"Command-Shift-/\"),exec:function(e){e.toggleBlockComment()},multiSelectAction:\"forEach\",scrollIntoView:\"selectionPart\"},{name:\"modifyNumberUp\",bindKey:i(\"Ctrl-Shift-Up\",\"Alt-Shift-Up\"),exec:function(e){e.modifyNumber(1)},scrollIntoView:\"cursor\",multiSelectAction:\"forEach\"},{name:\"modifyNumberDown\",bindKey:i(\"Ctrl-Shift-Down\",\"Alt-Shift-Down\"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:\"cursor\",multiSelectAction:\"forEach\"},{name:\"replace\",bindKey:i(\"Ctrl-H\",\"Command-Option-F\"),exec:function(e){o.loadModule(\"ace/ext/searchbox\",function(t){t.Search(e,!0)})}},{name:\"undo\",bindKey:i(\"Ctrl-Z\",\"Command-Z\"),exec:function(e){e.undo()}},{name:\"redo\",bindKey:i(\"Ctrl-Shift-Z|Ctrl-Y\",\"Command-Shift-Z|Command-Y\"),exec:function(e){e.redo()}},{name:\"copylinesup\",bindKey:i(\"Alt-Shift-Up\",\"Command-Option-Up\"),exec:function(e){e.copyLinesUp()},scrollIntoView:\"cursor\"},{name:\"movelinesup\",bindKey:i(\"Alt-Up\",\"Option-Up\"),exec:function(e){e.moveLinesUp()},scrollIntoView:\"cursor\"},{name:\"copylinesdown\",bindKey:i(\"Alt-Shift-Down\",\"Command-Option-Down\"),exec:function(e){e.copyLinesDown()},scrollIntoView:\"cursor\"},{name:\"movelinesdown\",bindKey:i(\"Alt-Down\",\"Option-Down\"),exec:function(e){e.moveLinesDown()},scrollIntoView:\"cursor\"},{name:\"del\",bindKey:i(\"Delete\",\"Delete|Ctrl-D|Shift-Delete\"),exec:function(e){e.remove(\"right\")},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"backspace\",bindKey:i(\"Shift-Backspace|Backspace\",\"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),exec:function(e){e.remove(\"left\")},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"cut_or_delete\",bindKey:i(\"Shift-Delete\",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove(\"left\")},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"removetolinestart\",bindKey:i(\"Alt-Backspace\",\"Command-Backspace\"),exec:function(e){e.removeToLineStart()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"removetolineend\",bindKey:i(\"Alt-Delete\",\"Ctrl-K|Command-Delete\"),exec:function(e){e.removeToLineEnd()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"removetolinestarthard\",bindKey:i(\"Ctrl-Shift-Backspace\",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"removetolineendhard\",bindKey:i(\"Ctrl-Shift-Delete\",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"removewordleft\",bindKey:i(\"Ctrl-Backspace\",\"Alt-Backspace|Ctrl-Alt-Backspace\"),exec:function(e){e.removeWordLeft()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"removewordright\",bindKey:i(\"Ctrl-Delete\",\"Alt-Delete\"),exec:function(e){e.removeWordRight()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"outdent\",bindKey:i(\"Shift-Tab\",\"Shift-Tab\"),exec:function(e){e.blockOutdent()},multiSelectAction:\"forEach\",scrollIntoView:\"selectionPart\"},{name:\"indent\",bindKey:i(\"Tab\",\"Tab\"),exec:function(e){e.indent()},multiSelectAction:\"forEach\",scrollIntoView:\"selectionPart\"},{name:\"blockoutdent\",bindKey:i(\"Ctrl-[\",\"Ctrl-[\"),exec:function(e){e.blockOutdent()},multiSelectAction:\"forEachLine\",scrollIntoView:\"selectionPart\"},{name:\"blockindent\",bindKey:i(\"Ctrl-]\",\"Ctrl-]\"),exec:function(e){e.blockIndent()},multiSelectAction:\"forEachLine\",scrollIntoView:\"selectionPart\"},{name:\"insertstring\",exec:function(e,t){e.insert(t)},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"inserttext\",exec:function(e,t){e.insert(r.stringRepeat(t.text||\"\",t.times||1))},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"splitline\",bindKey:i(null,\"Ctrl-O\"),exec:function(e){e.splitLine()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"transposeletters\",bindKey:i(\"Alt-Shift-X\",\"Ctrl-T\"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:\"cursor\"},{name:\"touppercase\",bindKey:i(\"Ctrl-U\",\"Ctrl-U\"),exec:function(e){e.toUpperCase()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"tolowercase\",bindKey:i(\"Ctrl-Shift-U\",\"Ctrl-Shift-U\"),exec:function(e){e.toLowerCase()},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\"},{name:\"expandtoline\",bindKey:i(\"Ctrl-Shift-L\",\"Command-Shift-L\"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:\"forEach\",scrollIntoView:\"cursor\",readOnly:!0},{name:\"joinlines\",bindKey:i(null,null),exec:function(e){for(var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,a=e.session.doc.getTextRange(e.selection.getRange()),l=a.replace(/\\n\\s*/,\" \").length,c=e.session.doc.getLine(n.row),u=n.row+1;u<=i.row+1;u++){var h=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(u)));0!==h.length&&(h=\" \"+h),c+=h}i.row+1<e.session.doc.getLength()-1&&(c+=e.session.doc.getNewLineCharacter()),e.clearSelection(),e.session.doc.replace(new s(n.row,0,i.row+2,0),c),l>0?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+l)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:\"forEach\",readOnly:!0},{name:\"invertSelection\",bindKey:i(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,i=e.selection.rangeList.ranges,r=[];i.length<1&&(i=[e.selection.getRange()]);for(var o=0;o<i.length;o++)o==i.length-1&&(i[o].end.row===t&&i[o].end.column===n||r.push(new s(i[o].end.row,i[o].end.column,t,n))),0===o?0===i[o].start.row&&0===i[o].start.column||r.push(new s(0,0,i[o].start.row,i[o].start.column)):r.push(new s(i[o-1].end.row,i[o-1].end.column,i[o].start.row,i[o].start.column));e.exitMultiSelectMode(),e.clearSelection();for(var o=0;o<r.length;o++)e.selection.addRange(r[o],!1)},readOnly:!0,scrollIntoView:\"none\"}]}),ace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\"],function(e,t,n){\"use strict\";e(\"./lib/fixoldbrowsers\");var i=e(\"./lib/oop\"),r=e(\"./lib/dom\"),o=e(\"./lib/lang\"),s=e(\"./lib/useragent\"),a=e(\"./keyboard/textinput\").TextInput,l=e(\"./mouse/mouse_handler\").MouseHandler,c=e(\"./mouse/fold_handler\").FoldHandler,u=e(\"./keyboard/keybinding\").KeyBinding,h=e(\"./edit_session\").EditSession,d=e(\"./search\").Search,f=e(\"./range\").Range,p=e(\"./lib/event_emitter\").EventEmitter,m=e(\"./commands/command_manager\").CommandManager,g=e(\"./commands/default_commands\").commands,v=e(\"./config\"),y=e(\"./token_iterator\").TokenIterator,b=function(e,t){var n=e.getContainerElement();this.container=n,this.renderer=e,this.id=\"editor\"+ ++b.$uid,this.commands=new m(s.isMac?\"mac\":\"win\",g),\"object\"==typeof document&&(this.textInput=new a(e.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new l(this),new c(this)),this.keyBinding=new u(this),this.$blockScrolling=0,this.$search=(new d).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on(\"exec\",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=o.delayedCall(function(){this._signal(\"input\",{}),this.session&&this.session.bgTokenizer&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on(\"change\",function(e,t){t._$emitInputEvent.schedule(31)}),this.setSession(t||new h(\"\")),v.resetOptions(this),v._signal(\"editor\",this)};b.$uid=0,function(){i.implement(this,p),this.$initOperationListeners=function(){this.selections=[],this.commands.on(\"exec\",this.startOperation.bind(this),!0),this.commands.on(\"afterExec\",this.endOperation.bind(this),!0),this.$opResetTimer=o.delayedCall(this.endOperation.bind(this)),this.on(\"change\",function(){this.curOp||this.startOperation(),this.curOp.docChanged=!0}.bind(this),!0),this.on(\"changeSelection\",function(){this.curOp||this.startOperation(),this.curOp.selectionChanged=!0}.bind(this),!0)},this.curOp=null,this.prevOp={},this.startOperation=function(e){if(this.curOp){if(!e||this.curOp.command)return;this.prevOp=this.curOp}e||(this.previousCommand=null,e={}),this.$opResetTimer.schedule(),this.curOp={command:e.command||{},args:e.args,scrollTop:this.renderer.scrollTop},this.curOp.command.name&&void 0!==this.curOp.command.scrollIntoView&&this.$blockScrolling++},this.endOperation=function(e){if(this.curOp){if(e&&!1===e.returnValue)return this.curOp=null;this._signal(\"beforeEndOperation\");var t=this.curOp.command;t.name&&this.$blockScrolling>0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case\"center-animate\":n=\"animate\";case\"center\":this.renderer.scrollCursorIntoView(null,.5);break;case\"animate\":case\"cursor\":this.renderer.scrollCursorIntoView();break;case\"selectionPart\":var i=this.selection.getRange(),r=this.renderer.layerConfig;(i.start.row>=r.lastRow||i.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}\"animate\"==n&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=[\"backspace\",\"del\",\"insertstring\"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,n=this.$mergeableCommands,i=t.command&&e.command.name==t.command.name;if(\"insertstring\"==e.command.name){var r=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),i=i&&this.mergeNextCommand&&(!/\\s/.test(r)||/\\s/.test(t.args)),this.mergeNextCommand=!0}else i=i&&-1!==n.indexOf(e.command.name);\"always\"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(i=!1),i?this.session.mergeUndoDeltas=!0:-1!==n.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&\"string\"==typeof e){this.$keybindingId=e;var n=this;v.loadModule([\"keybinding\",e],function(i){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(i&&i.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off(\"change\",this.$onDocumentChange),this.session.off(\"changeMode\",this.$onChangeMode),this.session.off(\"tokenizerUpdate\",this.$onTokenizerUpdate),this.session.off(\"changeTabSize\",this.$onChangeTabSize),this.session.off(\"changeWrapLimit\",this.$onChangeWrapLimit),this.session.off(\"changeWrapMode\",this.$onChangeWrapMode),this.session.off(\"changeFold\",this.$onChangeFold),this.session.off(\"changeFrontMarker\",this.$onChangeFrontMarker),this.session.off(\"changeBackMarker\",this.$onChangeBackMarker),this.session.off(\"changeBreakpoint\",this.$onChangeBreakpoint),this.session.off(\"changeAnnotation\",this.$onChangeAnnotation),this.session.off(\"changeOverwrite\",this.$onCursorChange),this.session.off(\"changeScrollTop\",this.$onScrollTopChange),this.session.off(\"changeScrollLeft\",this.$onScrollLeftChange);var n=this.session.getSelection();n.off(\"changeCursor\",this.$onCursorChange),n.off(\"changeSelection\",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on(\"change\",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on(\"changeMode\",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on(\"tokenizerUpdate\",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on(\"changeTabSize\",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on(\"changeWrapLimit\",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on(\"changeWrapMode\",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on(\"changeFold\",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on(\"changeFrontMarker\",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on(\"changeBackMarker\",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on(\"changeBreakpoint\",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on(\"changeAnnotation\",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on(\"changeOverwrite\",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on(\"changeScrollTop\",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on(\"changeScrollLeft\",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on(\"changeCursor\",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on(\"changeSelection\",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal(\"changeSession\",{session:e,oldSession:t}),this.curOp=null,t&&t._signal(\"changeEditor\",{oldEditor:this}),e&&e._signal(\"changeEditor\",{editor:this}),e&&e.bgTokenizer&&e.bgTokenizer.scheduleStart()}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption(\"fontSize\")||r.computedStyle(this.container,\"fontSize\")},this.setFontSize=function(e){this.setOption(\"fontSize\",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=t.findMatchingBracket(e.getCursorPosition());if(n)var i=new f(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var i=t.$mode.getMatching(e.session);i&&(t.$bracketHighlight=t.addMarker(i,\"ace_bracket\",\"text\"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=e.getCursorPosition(),i=new y(e.session,n.row,n.column),r=i.getCurrentToken();if(!r||!/\\b(?:tag-open|tag-name)/.test(r.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==r.type.indexOf(\"tag-open\")||(r=i.stepForward())){var o=r.value,s=0,a=i.stepBackward();if(\"<\"==a.value)do{a=r,(r=i.stepForward())&&r.value===o&&-1!==r.type.indexOf(\"tag-name\")&&(\"<\"===a.value?s++:\"</\"===a.value&&s--)}while(r&&s>=0);else{do{r=a,a=i.stepBackward(),r&&r.value===o&&-1!==r.type.indexOf(\"tag-name\")&&(\"<\"===a.value?s++:\"</\"===a.value&&s--)}while(a&&s<=0);i.stepForward()}if(!r)return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);var l=i.getCurrentTokenRow(),c=i.getCurrentTokenColumn(),u=new f(l,c,l,c+r.value.length),h=t.$backMarkers[t.$tagHighlight];t.$tagHighlight&&void 0!=h&&0!==u.compareRange(h.range)&&(t.removeMarker(t.$tagHighlight),t.$tagHighlight=null),u&&!t.$tagHighlight&&(t.$tagHighlight=t.addMarker(u,\"ace_bracket\",\"text\"))}}},50)}},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(e){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit(\"focus\",e))},this.onBlur=function(e){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit(\"blur\",e))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=this.session.$useWrapMode,n=e.start.row==e.end.row?e.end.row:1/0;this.renderer.updateLines(e.start.row,n,t),this._signal(\"change\",e),this.$cursorChange(),this.$updateHighlightActiveLine()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||(v.warn(\"Automatically scrolling cursor into view after selection change\",\"this will be disabled in the next version\",\"set editor.$blockScrolling = Infinity to disable this message\"),this.renderer.scrollCursorIntoView()),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal(\"changeSelection\")},this.$updateHighlightActiveLine=function(){var e,t=this.getSession();if(this.$highlightActiveLine&&(\"line\"==this.$selectionStyle&&this.selection.isMultiLine()||(e=this.getCursorPosition()),!this.renderer.$maxLines||1!==this.session.getLength()||this.renderer.$minLines>1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var n=new f(e.row,e.column,e.row,1/0);n.id=t.addMarker(n,\"ace_active-line\",\"screenLine\"),t.$highlightLineMarker=n}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal(\"changeBackMarker\"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var n=this.selection.getRange(),i=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,\"ace_selection\",i)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal(\"changeSelection\")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var n=t.start.column-1,i=t.end.column+1,r=e.getLine(t.start.row),o=r.length,s=r.substring(Math.max(n,0),Math.min(i,o));if(!(n>=0&&/^[\\w\\d]/.test(s)||i<=o&&/[\\w\\d]$/.test(s))&&(s=r.substring(t.start.column,t.end.column),/^[\\w\\d]+$/.test(s))){return this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s})}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit(\"changeMode\",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal(\"copy\",e),e},this.onCopy=function(){this.commands.exec(\"copy\",this)},this.onCut=function(){this.commands.exec(\"cut\",this)},this.onPaste=function(e,t){var n={text:e,event:t};this.commands.exec(\"paste\",this,n)},this.$handlePaste=function(e){\"string\"==typeof e&&(e={text:e}),this._signal(\"paste\",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var n=t.split(/\\r\\n|\\r|\\n/),i=this.selection.rangeList.ranges;if(n.length>i.length||n.length<2||!n[1])return this.commands.exec(\"insertstring\",this,t);for(var r=i.length;r--;){var o=i[r];o.isEmpty()||this.session.remove(o),this.session.insert(o.start,n[r])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,i=n.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var o=i.transformAction(n.getState(r.row),\"insertion\",this,n,e);o&&(e!==o.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=o.text)}if(\"\\t\"==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()&&-1==e.indexOf(\"\\n\")){var s=new f.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}}else{var s=this.getSelectionRange();r=this.session.remove(s),this.clearSelection()}if(\"\\n\"==e||\"\\r\\n\"==e){var a=n.getLine(r.row);if(r.column>a.search(/\\S|$/)){var l=a.substr(r.column).search(/\\S|$/);n.doc.removeInLine(r.row,r.column,r.column+l)}}this.clearSelection();var c=r.column,u=n.getState(r.row),a=n.getLine(r.row),h=i.checkOutdent(u,a,e);n.insert(r,e);if(o&&o.selection&&(2==o.selection.length?this.selection.setSelectionRange(new f(r.row,c+o.selection[0],r.row,c+o.selection[1])):this.selection.setSelectionRange(new f(r.row+o.selection[0],o.selection[1],r.row+o.selection[2],o.selection[3]))),n.getDocument().isNewLine(e)){var d=i.getNextLineIndent(u,a.slice(0,r.column),n.getTabString());n.insert({row:r.row+1,column:0},d)}h&&i.autoOutdent(u,n,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption(\"scrollSpeed\",e)},this.getScrollSpeed=function(){return this.getOption(\"scrollSpeed\")},this.setDragDelay=function(e){this.setOption(\"dragDelay\",e)},this.getDragDelay=function(){return this.getOption(\"dragDelay\")},this.setSelectionStyle=function(e){this.setOption(\"selectionStyle\",e)},this.getSelectionStyle=function(){return this.getOption(\"selectionStyle\")},this.setHighlightActiveLine=function(e){this.setOption(\"highlightActiveLine\",e)},this.getHighlightActiveLine=function(){return this.getOption(\"highlightActiveLine\")},this.setHighlightGutterLine=function(e){this.setOption(\"highlightGutterLine\",e)},this.getHighlightGutterLine=function(){return this.getOption(\"highlightGutterLine\")},this.setHighlightSelectedWord=function(e){this.setOption(\"highlightSelectedWord\",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption(\"readOnly\",e)},this.getReadOnly=function(){return this.getOption(\"readOnly\")},this.setBehavioursEnabled=function(e){this.setOption(\"behavioursEnabled\",e)},this.getBehavioursEnabled=function(){return this.getOption(\"behavioursEnabled\")},this.setWrapBehavioursEnabled=function(e){this.setOption(\"wrapBehavioursEnabled\",e)},this.getWrapBehavioursEnabled=function(){return this.getOption(\"wrapBehavioursEnabled\")},this.setShowFoldWidgets=function(e){this.setOption(\"showFoldWidgets\",e)},this.getShowFoldWidgets=function(){return this.getOption(\"showFoldWidgets\")},this.setFadeFoldWidgets=function(e){this.setOption(\"fadeFoldWidgets\",e)},this.getFadeFoldWidgets=function(){return this.getOption(\"fadeFoldWidgets\")},this.remove=function(e){this.selection.isEmpty()&&(\"left\"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,i=n.getState(t.start.row),r=n.getMode().transformAction(i,\"deletion\",this,n,t);if(0===t.end.column){var o=n.getTextRange(t);if(\"\\n\"==o[o.length-1]){var s=n.getLine(t.end.row);/^\\s+$/.test(s)&&(t.end.column=s.length)}}r&&(t=r)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert(\"\\n\"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var n,i,r=this.session.getLine(e.row);t<r.length?(n=r.charAt(t)+r.charAt(t-1),i=new f(e.row,t-1,e.row,t+1)):(n=r.charAt(t-1)+r.charAt(t-2),i=new f(e.row,t-2,e.row,t)),this.session.replace(i,n),this.session.selection.moveToPosition(i.end)}}},this.toLowerCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toLowerCase()),this.selection.setSelectionRange(e)},this.toUpperCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toUpperCase()),this.selection.setSelectionRange(e)},this.indent=function(){var e=this.session,t=this.getSelectionRange();if(t.start.row<t.end.row){var n=this.$getSelectedRows();return void e.indentRows(n.first,n.last,\"\\t\")}if(t.start.column<t.end.column){if(!/^\\s+$/.test(e.getTextRange(t))){var n=this.$getSelectedRows();return void e.indentRows(n.first,n.last,\"\\t\")}}var i=e.getLine(t.start.row),r=t.start,s=e.getTabSize(),a=e.documentToScreenColumn(r.row,r.column);if(this.session.getUseSoftTabs())var l=s-a%s,c=o.stringRepeat(\" \",l);else{for(var l=a%s;\" \"==i[t.start.column-1]&&l;)t.start.column--,l--;this.selection.setSelectionRange(t),c=\"\\t\"}return this.insert(c)},this.blockIndent=function(){var e=this.$getSelectedRows();this.session.indentRows(e.first,e.last,\"\\t\")},this.blockOutdent=function(){var e=this.session.getSelection();this.session.outdentRows(e.getRange())},this.sortLines=function(){for(var e=this.$getSelectedRows(),t=this.session,n=[],i=e.first;i<=e.last;i++)n.push(t.getLine(i));n.sort(function(e,t){return e.toLowerCase()<t.toLowerCase()?-1:e.toLowerCase()>t.toLowerCase()?1:0});for(var r=new f(0,0,0,0),i=e.first;i<=e.last;i++){var o=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=o.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\\-]?[0-9]+(?:\\.[0-9]+)?/g;n.lastIndex=0;for(var i=this.session.getLine(e);n.lastIndex<t;){var r=n.exec(i);if(r.index<=t&&r.index+r[0].length>=t){return{value:r[0],start:r.index,end:r.index+r[0].length}}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,i=new f(t,n-1,t,n),r=this.session.getTextRange(i);if(!isNaN(parseFloat(r))&&isFinite(r)){var o=this.getNumberAt(t,n);if(o){var s=o.value.indexOf(\".\")>=0?o.start+o.value.indexOf(\".\")+1:o.end,a=o.start+o.value.length-s,l=parseFloat(o.value);l*=Math.pow(10,a),s!==o.end&&n<s?e*=Math.pow(10,o.end-n-1):e*=Math.pow(10,o.end-n),l+=e,l/=Math.pow(10,a);var c=l.toFixed(a),u=new f(t,o.start,t,o.end);this.session.replace(u,c),this.moveCursorTo(t,Math.max(o.start+1,n+c.length-o.value.length))}}},this.removeLines=function(){var e=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,n=e.getRange(),i=e.isBackwards();if(n.isEmpty()){var r=n.start.row;t.duplicateLines(r,r)}else{var o=i?n.start:n.end,s=t.insert(o,t.getTextRange(n),!1);n.start=o,n.end=s,e.setSelectionRange(n,i)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(e,t,n){return this.session.moveText(e,t,n)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(e,t){var n,i,r=this.selection;if(!r.inMultiSelectMode||this.inVirtualSelectionMode){var o=r.toOrientedRange();n=this.$getSelectedRows(o),i=this.session.$moveLines(n.first,n.last,t?0:e),t&&-1==e&&(i=0),o.moveBy(i,0),r.fromOrientedRange(o)}else{var s=r.rangeList.ranges;r.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var a=0,l=0,c=s.length,u=0;u<c;u++){var h=u;s[u].moveBy(a,0),n=this.$getSelectedRows(s[u]);for(var d=n.first,f=n.last;++u<c;){l&&s[u].moveBy(l,0);var p=this.$getSelectedRows(s[u]);if(t&&p.first!=f)break;if(!t&&p.first>f+1)break;f=p.last}for(u--,a=this.session.$moveLines(d,f,t?0:e),t&&-1==e&&(h=u+1);h<=u;)s[h].moveBy(a,0),h++;t||(a=0),l+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,i=this.renderer.layerConfig,r=e*Math.floor(i.height/i.lineHeight);this.$blockScrolling++,!0===t?this.selection.$moveSelection(function(){this.moveCursorBy(r,0)}):!1===t&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection()),this.$blockScrolling--;var o=n.scrollTop;n.scrollBy(0,r*i.lineHeight),null!=t&&n.scrollCursorIntoView(null,.5),n.animateScrolling(o)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,i){this.renderer.scrollToLine(e,t,n,i)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),i=new y(this.session,n.row,n.column),r=i.getCurrentToken(),o=r||i.stepForward();if(o){var s,a,l=!1,c={},u=n.column-o.start,h={\")\":\"(\",\"(\":\"(\",\"]\":\"[\",\"[\":\"[\",\"{\":\"{\",\"}\":\"{\"};do{if(o.value.match(/[{}()\\[\\]]/g)){for(;u<o.value.length&&!l;u++)if(h[o.value[u]])switch(a=h[o.value[u]]+\".\"+o.type.replace(\"rparen\",\"lparen\"),isNaN(c[a])&&(c[a]=0),o.value[u]){case\"(\":case\"[\":case\"{\":c[a]++;break;case\")\":case\"]\":case\"}\":c[a]--,-1===c[a]&&(s=\"bracket\",l=!0)}}else o&&-1!==o.type.indexOf(\"tag-name\")&&(isNaN(c[o.value])&&(c[o.value]=0),\"<\"===r.value?c[o.value]++:\"</\"===r.value&&c[o.value]--,-1===c[o.value]&&(s=\"tag\",l=!0));l||(r=o,o=i.stepForward(),u=0)}while(o&&!l);if(s){var d,p;if(\"bracket\"===s)(d=this.session.getBracketRange(n))||(d=new f(i.getCurrentTokenRow(),i.getCurrentTokenColumn()+u-1,i.getCurrentTokenRow(),i.getCurrentTokenColumn()+u-1),p=d.start,(t||p.row===n.row&&Math.abs(p.column-n.column)<2)&&(d=this.session.getBracketRange(p)));else if(\"tag\"===s){if(!o||-1===o.type.indexOf(\"tag-name\"))return;var m=o.value;if(d=new f(i.getCurrentTokenRow(),i.getCurrentTokenColumn()-2,i.getCurrentTokenRow(),i.getCurrentTokenColumn()-2),0===d.compare(n.row,n.column)){l=!1;do{o=r,(r=i.stepBackward())&&(-1!==r.type.indexOf(\"tag-close\")&&d.setEnd(i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1),o.value===m&&-1!==o.type.indexOf(\"tag-name\")&&(\"<\"===r.value?c[m]++:\"</\"===r.value&&c[m]--,0===c[m]&&(l=!0)))}while(r&&!l)}o&&o.type.indexOf(\"tag-name\")&&(p=d.start,p.row==n.row&&Math.abs(p.column-n.column)<2&&(p=d.end))}p=d&&d.cursor||p,p&&(e?d&&t?this.selection.setRange(d):d&&d.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(p.row,p.column):this.selection.moveTo(p.row,p.column))}}},this.gotoLine=function(e,t,n){this.selection.clearSelection(),this.session.unfold({row:e-1,column:t||0}),this.$blockScrolling+=1,this.exitMultiSelectMode&&this.exitMultiSelectMode(),this.moveCursorTo(e-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(e-1)||this.scrollToLine(e-1,!0,n)},this.navigateTo=function(e,t){this.selection.moveTo(e,t)},this.navigateUp=function(e){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),this.selection.moveCursorBy(-e||-1,0)},this.navigateDown=function(e){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),this.selection.moveCursorBy(e||1,0)},this.navigateLeft=function(e){if(this.selection.isEmpty())for(e=e||1;e--;)this.selection.moveCursorLeft();else{var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}this.clearSelection()},this.navigateRight=function(e){if(this.selection.isEmpty())for(e=e||1;e--;)this.selection.moveCursorRight();else{var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){this.selection.moveCursorFileEnd(),this.clearSelection()},this.navigateFileStart=function(){this.selection.moveCursorFileStart(),this.clearSelection()},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(e,t){t&&this.$search.set(t);var n=this.$search.find(this.session),i=0;return n?(this.$tryReplace(n,e)&&(i=1),null!==n&&(this.selection.setSelectionRange(n),this.renderer.scrollSelectionIntoView(n.start,n.end)),i):i},this.replaceAll=function(e,t){t&&this.$search.set(t);var n=this.$search.findAll(this.session),i=0;if(!n.length)return i;this.$blockScrolling+=1;var r=this.getSelectionRange();this.selection.moveTo(0,0);for(var o=n.length-1;o>=0;--o)this.$tryReplace(n[o],e)&&i++;return this.selection.setSelectionRange(r),this.$blockScrolling-=1,i},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),null!==t?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),\"string\"==typeof e||e instanceof RegExp?t.needle=e:\"object\"==typeof e&&i.mixin(t,e);var r=this.selection.getRange();null==t.needle&&(e=this.session.getTextRange(r)||this.$search.$options.needle,e||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var o=this.$search.find(this.session);return t.preventScroll?o:o?(this.revealRange(o,n),o):(t.backwards?r.start=r.end:r.end=r.start,void this.selection.setRange(r))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal(\"destroy\",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,n=this,i=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement(\"div\"));var r=this.$scrollAnchor;r.style.cssText=\"position:absolute\",this.container.insertBefore(r,this.container.firstChild);var o=this.on(\"changeSelection\",function(){i=!0}),s=this.renderer.on(\"beforeRender\",function(){i&&(t=n.renderer.container.getBoundingClientRect())}),a=this.renderer.on(\"afterRender\",function(){if(i&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,o=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=o.top-s.offset;i=o.top>=0&&a+t.top<0||!(o.top<s.height&&o.top+t.top+s.lineHeight>window.innerHeight)&&null,null!=i&&(r.style.top=a+\"px\",r.style.left=o.left+\"px\",r.style.height=s.lineHeight+\"px\",r.scrollIntoView(i)),i=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off(\"changeSelection\",o),this.renderer.off(\"afterRender\",a),this.renderer.off(\"beforeRender\",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||\"ace\",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&\"wide\"!=e,r.setCssClass(t.element,\"ace_slim-cursors\",/slim/.test(e)))}}.call(b.prototype),v.defineOptions(b.prototype,\"editor\",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal(\"changeSelectionStyle\",{data:e})},initialValue:\"line\"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:[\"ace\",\"slim\",\"smooth\",\"wide\"],initialValue:\"ace\"},mergeUndoDeltas:{values:[!1,!0,\"always\"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:\"renderer\",vScrollBarAlwaysVisible:\"renderer\",highlightGutterLine:\"renderer\",animatedScroll:\"renderer\",showInvisibles:\"renderer\",showPrintMargin:\"renderer\",printMarginColumn:\"renderer\",printMargin:\"renderer\",fadeFoldWidgets:\"renderer\",showFoldWidgets:\"renderer\",showLineNumbers:\"renderer\",showGutter:\"renderer\",displayIndentGuides:\"renderer\",fontSize:\"renderer\",fontFamily:\"renderer\",maxLines:\"renderer\",minLines:\"renderer\",scrollPastEnd:\"renderer\",fixedWidthGutter:\"renderer\",theme:\"renderer\",scrollSpeed:\"$mouseHandler\",dragDelay:\"$mouseHandler\",dragEnabled:\"$mouseHandler\",focusTimout:\"$mouseHandler\",tooltipFollowsMouse:\"$mouseHandler\",firstLineNumber:\"session\",overwrite:\"session\",newLineMode:\"session\",useWorker:\"session\",useSoftTabs:\"session\",tabSize:\"session\",wrap:\"session\",indentedSoftWrap:\"session\",foldStyle:\"session\",mode:\"session\"}),t.Editor=b}),ace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\"],function(e,t,n){\"use strict\";var i=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function n(e,t){for(var n=new Array(e.length),i=0;i<e.length;i++){for(var r=e[i],o={group:r.group,deltas:new Array(r.length)},s=0;s<r.deltas.length;s++){var a=r.deltas[s];o.deltas[s]=t(a)}n[i]=o}return n}this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],e.merge&&this.hasUndo()&&(this.dirtyCounter--,t=this.$undoStack.pop().concat(t)),this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=NaN),this.dirtyCounter++},this.undo=function(e){var t=this.$undoStack.pop(),n=null;return t&&(n=this.$doc.undoChanges(t,e),this.$redoStack.push(t),this.dirtyCounter--),n},this.redo=function(e){var t=this.$redoStack.pop(),n=null;return t&&(n=this.$doc.redoChanges(this.$deserializeDeltas(t),e),this.$undoStack.push(t),this.dirtyCounter++),n},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return n(t,e)},this.$deserializeDeltas=function(e){return n(e,t)}}).call(i.prototype),t.UndoManager=i}),ace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\"],function(e,t,n){\"use strict\";var i=e(\"../lib/dom\"),r=e(\"../lib/oop\"),o=e(\"../lib/lang\"),s=e(\"../lib/event_emitter\").EventEmitter,a=function(e){this.element=i.createElement(\"div\"),this.element.className=\"ace_layer ace_gutter-layer\",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){r.implement(this,s),this.setSession=function(e){this.session&&this.session.removeEventListener(\"change\",this.$updateAnnotations),this.session=e,e&&e.on(\"change\",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn(\"deprecated use session.addGutterDecoration\"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn(\"deprecated use session.removeGutterDecoration\"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;t<e.length;t++){var n=e[t],i=n.row,r=this.$annotations[i];r||(r=this.$annotations[i]={text:[]});var s=n.text;s=s?o.escapeHTML(s):n.html||\"\",-1===r.text.indexOf(s)&&r.text.push(s);var a=n.type;\"error\"==a?r.className=\" ace_error\":\"warning\"==a&&\" ace_error\"!=r.className?r.className=\" ace_warning\":\"info\"!=a||r.className||(r.className=\" ace_info\")}},this.$updateAnnotations=function(e){if(this.$annotations.length){var t=e.start.row,n=e.end.row-t;if(0===n);else if(\"remove\"==e.action)this.$annotations.splice(t,n+1,null);else{var i=new Array(n+1);i.unshift(t,1),this.$annotations.splice.apply(this.$annotations,i)}}},this.update=function(e){for(var t=this.session,n=e.firstRow,r=Math.min(e.lastRow+e.gutterOffset,t.getLength()-1),o=t.getNextFoldLine(n),s=o?o.start.row:1/0,a=this.$showFoldWidgets&&t.foldWidgets,l=t.$breakpoints,c=t.$decorations,u=t.$firstLineNumber,h=0,d=t.gutterRenderer||this.$renderer,f=null,p=-1,m=n;;){if(m>s&&(m=o.end.row+1,o=t.getNextFoldLine(m,o),s=o?o.start.row:1/0),m>r){for(;this.$cells.length>p+1;)f=this.$cells.pop(),this.element.removeChild(f.element);break}f=this.$cells[++p],f||(f={element:null,textNode:null,foldWidget:null},f.element=i.createElement(\"div\"),f.textNode=document.createTextNode(\"\"),f.element.appendChild(f.textNode),this.element.appendChild(f.element),this.$cells[p]=f);var g=\"ace_gutter-cell \";l[m]&&(g+=l[m]),c[m]&&(g+=c[m]),this.$annotations[m]&&(g+=this.$annotations[m].className),f.element.className!=g&&(f.element.className=g);var v=t.getRowLength(m)*e.lineHeight+\"px\";if(v!=f.element.style.height&&(f.element.style.height=v),a){var y=a[m];null==y&&(y=a[m]=t.getFoldWidget(m))}if(y){f.foldWidget||(f.foldWidget=i.createElement(\"span\"),f.element.appendChild(f.foldWidget));var g=\"ace_fold-widget ace_\"+y;\"start\"==y&&m==s&&m<o.end.row?g+=\" ace_closed\":g+=\" ace_open\",f.foldWidget.className!=g&&(f.foldWidget.className=g);var v=e.lineHeight+\"px\";f.foldWidget.style.height!=v&&(f.foldWidget.style.height=v)}else f.foldWidget&&(f.element.removeChild(f.foldWidget),f.foldWidget=null);var b=h=d?d.getText(t,m):m+u;b!==f.textNode.data&&(f.textNode.data=b),m++}this.element.style.height=e.minHeight+\"px\",(this.$fixedWidth||t.$useWrapMode)&&(h=t.getLength()+u);var w=d?d.getWidth(t,h,e):h.toString().length*e.characterWidth,C=this.$padding||this.$computePadding();(w+=C.left+C.right)===this.gutterWidth||isNaN(w)||(this.gutterWidth=w,this.element.style.width=Math.ceil(this.gutterWidth)+\"px\",this._emit(\"changeGutterWidth\",w))},this.$fixedWidth=!1,this.$showLineNumbers=!0,this.$renderer=\"\",this.setShowLineNumbers=function(e){this.$renderer=!e&&{getWidth:function(){return\"\"},getText:function(){return\"\"}}},this.getShowLineNumbers=function(){return this.$showLineNumbers},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(e){e?i.addCssClass(this.element,\"ace_folding-enabled\"):i.removeCssClass(this.element,\"ace_folding-enabled\"),this.$showFoldWidgets=e,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var e=i.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(e.paddingLeft)+1||0,this.$padding.right=parseInt(e.paddingRight)||0,this.$padding},this.getRegion=function(e){var t=this.$padding||this.$computePadding(),n=this.element.getBoundingClientRect();return e.x<t.left+n.left?\"markers\":this.$showFoldWidgets&&e.x>n.right-t.right?\"foldWidgets\":void 0}}).call(a.prototype),t.Gutter=a}),ace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"],function(e,t,n){\"use strict\";var i=e(\"../range\").Range,r=e(\"../lib/dom\"),o=function(e){this.element=r.createElement(\"div\"),this.element.className=\"ace_layer ace_marker-layer\",e.appendChild(this.element)};(function(){function e(e,t,n,i){return(e?1:0)|(t?2:0)|(n?4:0)|(i?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){if(e){this.config=e;var t=[];for(var n in this.markers){var i=this.markers[n];if(i.range){var r=i.range.clipRows(e.firstRow,e.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),i.renderer){var o=this.$getTop(r.start.row,e),s=this.$padding+(this.session.$bidiHandler.isBidiRow(r.start.row)?this.session.$bidiHandler.getPosLeft(r.start.column):r.start.column*e.characterWidth);i.renderer(t,r,s,o,e)}else\"fullLine\"==i.type?this.drawFullLineMarker(t,r,i.clazz,e):\"screenLine\"==i.type?this.drawScreenLineMarker(t,r,i.clazz,e):r.isMultiLine()?\"text\"==i.type?this.drawTextMarker(t,r,i.clazz,e):this.drawMultiLineMarker(t,r,i.clazz,e):this.session.$bidiHandler.isBidiRow(r.start.row)?this.drawBidiSingleLineMarker(t,r,i.clazz+\" ace_start ace_br15\",e):this.drawSingleLineMarker(t,r,i.clazz+\" ace_start ace_br15\",e)}else i.update(t,this,this.session,e)}this.element.innerHTML=t.join(\"\")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,n,r,o,s){for(var a=this.session,l=n.start.row,c=n.end.row,u=l,h=0,d=0,f=a.getScreenLastRowColumn(u),p=null,m=new i(u,n.start.column,u,d);u<=c;u++)m.start.row=m.end.row=u,m.start.column=u==l?n.start.column:a.getRowWrapIndent(u),m.end.column=f,h=d,d=f,f=u+1<c?a.getScreenLastRowColumn(u+1):u==c?0:n.end.column,p=r+(u==l?\" ace_start\":\"\")+\" ace_br\"+e(u==l||u==l+1&&n.start.column,h<d,d>f,u==c),this.session.$bidiHandler.isBidiRow(u)?this.drawBidiSingleLineMarker(t,m,p,o,u==c?0:1,s):this.drawSingleLineMarker(t,m,p,o,u==c?0:1,s)},this.drawMultiLineMarker=function(e,t,n,i,r){var o,s,a,l=this.$padding;if(r=r||\"\",this.session.$bidiHandler.isBidiRow(t.start.row)){var c=t.clone();c.end.row=c.start.row,c.end.column=this.session.getLine(c.start.row).length,this.drawBidiSingleLineMarker(e,c,n+\" ace_br1 ace_start\",i,null,r)}else o=i.lineHeight,s=this.$getTop(t.start.row,i),a=l+t.start.column*i.characterWidth,e.push(\"<div class='\",n,\" ace_br1 ace_start' style='\",\"height:\",o,\"px;\",\"right:0;\",\"top:\",s,\"px;\",\"left:\",a,\"px;\",r,\"'></div>\");if(this.session.$bidiHandler.isBidiRow(t.end.row)){var c=t.clone();c.start.row=c.end.row,c.start.column=0,this.drawBidiSingleLineMarker(e,c,n+\" ace_br12\",i,null,r)}else{var u=t.end.column*i.characterWidth;o=i.lineHeight,s=this.$getTop(t.end.row,i),e.push(\"<div class='\",n,\" ace_br12' style='\",\"height:\",o,\"px;\",\"width:\",u,\"px;\",\"top:\",s,\"px;\",\"left:\",l,\"px;\",r,\"'></div>\")}if(!((o=(t.end.row-t.start.row-1)*i.lineHeight)<=0)){s=this.$getTop(t.start.row+1,i);var h=(t.start.column?1:0)|(t.end.column?0:8);e.push(\"<div class='\",n,h?\" ace_br\"+h:\"\",\"' style='\",\"height:\",o,\"px;\",\"right:0;\",\"top:\",s,\"px;\",\"left:\",l,\"px;\",r,\"'></div>\")}},this.drawSingleLineMarker=function(e,t,n,i,r,o){var s=i.lineHeight,a=(t.end.column+(r||0)-t.start.column)*i.characterWidth,l=this.$getTop(t.start.row,i),c=this.$padding+t.start.column*i.characterWidth;e.push(\"<div class='\",n,\"' style='\",\"height:\",s,\"px;\",\"width:\",a,\"px;\",\"top:\",l,\"px;\",\"left:\",c,\"px;\",o||\"\",\"'></div>\")},this.drawBidiSingleLineMarker=function(e,t,n,i,r,o){var s=i.lineHeight,a=this.$getTop(t.start.row,i),l=this.$padding;this.session.$bidiHandler.getSelections(t.start.column,t.end.column).forEach(function(t){e.push(\"<div class='\",n,\"' style='\",\"height:\",s,\"px;\",\"width:\",t.width+(r||0),\"px;\",\"top:\",a,\"px;\",\"left:\",l+t.left,\"px;\",o||\"\",\"'></div>\")})},this.drawFullLineMarker=function(e,t,n,i,r){var o=this.$getTop(t.start.row,i),s=i.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,i)-o),e.push(\"<div class='\",n,\"' style='\",\"height:\",s,\"px;\",\"top:\",o,\"px;\",\"left:0;right:0;\",r||\"\",\"'></div>\")},this.drawScreenLineMarker=function(e,t,n,i,r){var o=this.$getTop(t.start.row,i),s=i.lineHeight;e.push(\"<div class='\",n,\"' style='\",\"height:\",s,\"px;\",\"top:\",o,\"px;\",\"left:0;right:0;\",r||\"\",\"'></div>\")}}).call(o.prototype),t.Marker=o}),ace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"],function(e,t,n){\"use strict\";var i=e(\"../lib/oop\"),r=e(\"../lib/dom\"),o=e(\"../lib/lang\"),s=(e(\"../lib/useragent\"),e(\"../lib/event_emitter\").EventEmitter),a=function(e){this.element=r.createElement(\"div\"),this.element.className=\"ace_layer ace_text-layer\",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){i.implement(this,s),this.EOF_CHAR=\"¶\",this.EOL_CHAR_LF=\"¬\",this.EOL_CHAR_CRLF=\"¤\",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR=\"—\",this.SPACE_CHAR=\"·\",this.$padding=0,this.$updateEolChar=function(){var e=\"\\n\"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding=\"0 \"+e+\"px\"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on(\"changeCharacterSize\",function(e){this._signal(\"changeCharacterSize\",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],n=1;n<e+1;n++)this.showInvisibles?t.push(\"<span class='ace_invisible ace_invisible_tab'>\"+o.stringRepeat(this.TAB_CHAR,n)+\"</span>\"):t.push(o.stringRepeat(\" \",n));if(this.displayIndentGuides){this.$indentGuideRe=/\\s\\S| \\t|\\t |\\s$/;var i=\"ace_indent-guide\",r=\"\",s=\"\";if(this.showInvisibles){i+=\" ace_invisible\",r=\" ace_invisible_space\",s=\" ace_invisible_tab\";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=o.stringRepeat(this.TAB_CHAR,this.tabSize)}else var a=o.stringRepeat(\" \",this.tabSize),l=a;this.$tabStrings[\" \"]=\"<span class='\"+i+r+\"'>\"+a+\"</span>\",this.$tabStrings[\"\\t\"]=\"<span class='\"+i+s+\"'>\"+l+\"</span>\"}},this.updateLines=function(e,t,n){this.config.lastRow==e.lastRow&&this.config.firstRow==e.firstRow||this.scrollLines(e),this.config=e;for(var i=Math.max(t,e.firstRow),r=Math.min(n,e.lastRow),o=this.element.childNodes,s=0,a=e.firstRow;a<i;a++){var l=this.session.getFoldLine(a);if(l){if(l.containsRow(i)){i=l.start.row;break}a=l.end.row}s++}for(var a=i,l=this.session.getNextFoldLine(a),c=l?l.start.row:1/0;;){if(a>c&&(a=l.end.row+1,l=this.session.getNextFoldLine(a,l),c=l?l.start.row:1/0),a>r)break;var u=o[s++];if(u){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==c&&l),u.style.height=e.lineHeight*this.session.getRowLength(a)+\"px\",u.innerHTML=h.join(\"\")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow<e.firstRow)return this.update(e);if(e.lastRow<t.firstRow)return this.update(e);var n=this.element;if(t.firstRow<e.firstRow)for(var i=this.session.getFoldedRowCount(t.firstRow,e.firstRow-1);i>0;i--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var i=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);i>0;i--)n.removeChild(n.lastChild);if(e.firstRow<t.firstRow){var r=this.$renderLinesFragment(e,e.firstRow,t.firstRow-1);n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r)}if(e.lastRow>t.lastRow){var r=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(r)}},this.$renderLinesFragment=function(e,t,n){for(var i=this.element.ownerDocument.createDocumentFragment(),o=t,s=this.session.getNextFoldLine(o),a=s?s.start.row:1/0;;){if(o>a&&(o=s.end.row+1,s=this.session.getNextFoldLine(o,s),a=s?s.start.row:1/0),o>n)break;var l=r.createElement(\"div\"),c=[];if(this.$renderLine(c,o,!1,o==a&&s),l.innerHTML=c.join(\"\"),this.$useLineGroups())l.className=\"ace_line_group\",i.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(o)+\"px\";else for(;l.firstChild;)i.appendChild(l.firstChild);o++}return i},this.update=function(e){this.config=e;for(var t=[],n=e.firstRow,i=e.lastRow,r=n,o=this.session.getNextFoldLine(r),s=o?o.start.row:1/0;;){if(r>s&&(r=o.end.row+1,o=this.session.getNextFoldLine(r,o),s=o?o.start.row:1/0),r>i)break;this.$useLineGroups()&&t.push(\"<div class='ace_line_group' style='height:\",e.lineHeight*this.session.getRowLength(r),\"px'>\"),this.$renderLine(t,r,!1,r==s&&o),this.$useLineGroups()&&t.push(\"</div>\"),r++}this.element.innerHTML=t.join(\"\")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,i){var r=this,s=/\\t|&|<|>|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF\\uFFF9-\\uFFFC])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,a=function(e,n,i,s,a){if(n)return r.showInvisibles?\"<span class='ace_invisible ace_invisible_space'>\"+o.stringRepeat(r.SPACE_CHAR,e.length)+\"</span>\":e;if(\"&\"==e)return\"&#38;\";if(\"<\"==e)return\"&#60;\";if(\">\"==e)return\"&#62;\";if(\"\\t\"==e){var l=r.session.getScreenTabSize(t+s);return t+=l-1,r.$tabStrings[l]}if(\"　\"==e){var c=r.showInvisibles?\"ace_cjk ace_invisible ace_invisible_space\":\"ace_cjk\",u=r.showInvisibles?r.SPACE_CHAR:\"\";return t+=1,\"<span class='\"+c+\"' style='width:\"+2*r.config.characterWidth+\"px'>\"+u+\"</span>\"}return i?\"<span class='ace_invisible ace_invisible_space ace_invalid'>\"+r.SPACE_CHAR+\"</span>\":(t+=1,\"<span class='ace_cjk' style='width:\"+2*r.config.characterWidth+\"px'>\"+e+\"</span>\")},l=i.replace(s,a);if(this.$textToken[n.type])e.push(l);else{var c=\"ace_\"+n.type.replace(/\\./g,\" ace_\"),u=\"\";\"fold\"==n.type&&(u=\" style='width:\"+n.value.length*this.config.characterWidth+\"px;' \"),e.push(\"<span class='\",c,\"'\",u,\">\",l,\"</span>\")}return t+i.length},this.renderIndentGuide=function(e,t,n){var i=t.search(this.$indentGuideRe);return i<=0||i>=n?t:\" \"==t[0]?(i-=i%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[\" \"],i/this.tabSize)),t.substr(i)):\"\\t\"==t[0]?(e.push(o.stringRepeat(this.$tabStrings[\"\\t\"],i)),t.substr(i)):t},this.$renderWrappedLine=function(e,t,n,i){for(var r=0,s=0,a=n[0],l=0,c=0;c<t.length;c++){var u=t[c],h=u.value;if(0==c&&this.displayIndentGuides){if(r=h.length,!(h=this.renderIndentGuide(e,h,a)))continue;r-=h.length}if(r+h.length<a)l=this.$renderToken(e,l,u,h),r+=h.length;else{for(;r+h.length>=a;)l=this.$renderToken(e,l,u,h.substring(0,a-r)),h=h.substring(a-r),r=a,i||e.push(\"</div>\",\"<div class='ace_line' style='height:\",this.config.lineHeight,\"px'>\"),e.push(o.stringRepeat(\" \",n.indent)),s++,l=0,a=n[s]||Number.MAX_VALUE;0!=h.length&&(r+=h.length,l=this.$renderToken(e,l,u,h))}}},this.$renderSimpleLine=function(e,t){var n=0,i=t[0],r=i.value;this.displayIndentGuides&&(r=this.renderIndentGuide(e,r)),r&&(n=this.$renderToken(e,n,i,r));for(var o=1;o<t.length;o++)i=t[o],r=i.value,n=this.$renderToken(e,n,i,r)},this.$renderLine=function(e,t,n,i){if(i||0==i||(i=this.session.getFoldLine(t)),i)var r=this.$getFoldLineTokens(t,i);else var r=this.session.getTokens(t);if(n||e.push(\"<div class='ace_line' style='height:\",this.config.lineHeight*(this.$useLineGroups()?1:this.session.getRowLength(t)),\"px'>\"),r.length){var o=this.session.getRowSplitData(t);o&&o.length?this.$renderWrappedLine(e,r,o,n):this.$renderSimpleLine(e,r)}this.showInvisibles&&(i&&(t=i.end.row),e.push(\"<span class='ace_invisible ace_invisible_eol'>\",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,\"</span>\")),n||e.push(\"</div>\")},this.$getFoldLineTokens=function(e,t){function n(e,t,n){for(var i=0,o=0;o+e[i].value.length<t;)if(o+=e[i].value.length,++i==e.length)return;if(o!=t){var s=e[i].value.substring(t-o);s.length>n-t&&(s=s.substring(0,n-t)),r.push({type:e[i].type,value:s}),o=t+s.length,i+=1}for(;o<n&&i<e.length;){var s=e[i].value;s.length+o>n?r.push({type:e[i].type,value:s.substring(0,n-o)}):r.push(e[i]),o+=s.length,i+=1}}var i=this.session,r=[],o=i.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?r.push({type:\"fold\",value:e}):(l&&(o=i.getTokens(t)),o.length&&n(o,a,s))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){\"use strict\";var i,r=e(\"../lib/dom\"),o=function(e){this.element=r.createElement(\"div\"),this.element.className=\"ace_layer ace_cursor-layer\",e.appendChild(this.element),void 0===i&&(i=!(\"opacity\"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,\"ace_hidden-cursors\"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,n=t.length;n--;)t[n].style.visibility=e?\"\":\"hidden\"},this.$updateOpacity=function(e){for(var t=this.cursors,n=t.length;n--;)t[n].style.opacity=e?\"\":\"0\"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||i||(this.smoothBlinking=e,r.setCssClass(this.element,\"ace_smooth-blinking\",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement(\"div\");return e.className=\"ace_cursor\",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,\"ace_hidden-cursors\"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,\"ace_hidden-cursors\"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,\"ace_smooth-blinking\"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,\"ace_smooth-blinking\")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e);return{left:this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),top:(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,i=0;void 0!==t&&0!==t.length||(t=[{cursor:null}]);for(var n=0,r=t.length;n<r;n++){var o=this.getPixelPosition(t[n].cursor,!0);if(!((o.top>e.height+e.offset||o.top<0)&&n>1)){var s=(this.cursors[i++]||this.addCursor()).style;this.drawCursor?this.drawCursor(s,o,e,t[n],this.session):(s.left=o.left+\"px\",s.top=o.top+\"px\",s.width=e.characterWidth+\"px\",s.height=e.lineHeight+\"px\")}}for(;this.cursors.length>i;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,\"ace_overwrite-cursors\"):r.removeCssClass(this.element,\"ace_overwrite-cursors\"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"],function(e,t,n){\"use strict\";var i=e(\"./lib/oop\"),r=e(\"./lib/dom\"),o=e(\"./lib/event\"),s=e(\"./lib/event_emitter\").EventEmitter,a=function(e){this.element=r.createElement(\"div\"),this.element.className=\"ace_scrollbar ace_scrollbar\"+this.classSuffix,this.inner=r.createElement(\"div\"),this.inner.className=\"ace_scrollbar-inner\",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,\"scroll\",this.onScroll.bind(this)),o.addListener(this.element,\"mousedown\",o.preventDefault)};(function(){i.implement(this,s),this.setVisible=function(e){this.element.style.display=e?\"\":\"none\",this.isVisible=e,this.coeff=1}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=r.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+\"px\",this.$minWidth=0};i.inherits(l,a),function(){this.classSuffix=\"-v\",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit(\"scroll\",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(e){this.element.style.height=e+\"px\"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>32768?(this.coeff=32768/e,e=32768):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+\"px\"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+\"px\"};i.inherits(c,a),function(){this.classSuffix=\"-h\",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit(\"scroll\",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+\"px\"},this.setInnerWidth=function(e){this.inner.style.width=e+\"px\"},this.setScrollWidth=function(e){this.inner.style.width=e+\"px\"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(e,t,n){\"use strict\";var i=e(\"./lib/event\"),r=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;i.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(r.prototype),t.RenderLoop=r}),ace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"],function(e,t,n){var i=e(\"../lib/oop\"),r=e(\"../lib/dom\"),o=e(\"../lib/lang\"),s=e(\"../lib/useragent\"),a=e(\"../lib/event_emitter\").EventEmitter,l=0,c=t.FontMetrics=function(e){this.el=r.createElement(\"div\"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement(\"div\"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement(\"div\"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat(\"X\",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){i.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=r.createElement(\"div\");this.$setMeasureNodeStyles(e.style),e.style.width=\"0.2px\",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&t<1?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height=\"auto\",e.left=e.top=\"0px\",e.visibility=\"hidden\",e.position=\"absolute\",e.whiteSpace=\"pre\",s.isIE<8?e[\"font-family\"]=\"inherit\":e.font=\"inherit\",e.overflow=t?\"hidden\":\"visible\"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight=\"bold\";var t=this.$measureSizes();this.$measureNode.style.fontWeight=\"\",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit(\"changeCharacterSize\",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var t={height:e.height,width:e.width/l}}else var t={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===t.width||0===t.height?null:t},this.$measureCharWidth=function(e){return this.$main.innerHTML=o.stringRepeat(e,l),this.$main.getBoundingClientRect().width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),ace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/config\",\"ace/lib/useragent\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\"],function(e,t,n){\"use strict\";var i=e(\"./lib/oop\"),r=e(\"./lib/dom\"),o=e(\"./config\"),s=e(\"./lib/useragent\"),a=e(\"./layer/gutter\").Gutter,l=e(\"./layer/marker\").Marker,c=e(\"./layer/text\").Text,u=e(\"./layer/cursor\").Cursor,h=e(\"./scrollbar\").HScrollBar,d=e(\"./scrollbar\").VScrollBar,f=e(\"./renderloop\").RenderLoop,p=e(\"./layer/font_metrics\").FontMetrics,m=e(\"./lib/event_emitter\").EventEmitter;r.importCssString('.ace_editor {position: relative;overflow: hidden;font: 12px/normal \\'Monaco\\', \\'Menlo\\', \\'Ubuntu Mono\\', \\'Consolas\\', \\'source-code-pro\\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \\'\\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block;   }.ace_fold-widget.ace_end {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\");}.ace_fold-widget.ace_closed {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");}.ace_dark .ace_fold-widget.ace_end {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget.ace_closed {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius    : 3px;}.ace_br2 {border-top-right-radius   : 3px;}.ace_br3 {border-top-left-radius    : 3px; border-top-right-radius:    3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius    : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius   : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius    : 3px; border-bottom-left-radius:  3px;}.ace_br10{border-top-right-radius   : 3px; border-bottom-left-radius:  3px;}.ace_br11{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-left-radius:  3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br13{border-top-left-radius    : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br14{border-top-right-radius   : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br15{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_text-input-ios {position: absolute !important;top: -100000px !important;left: -100000px !important;}',\"ace_editor.css\");var g=function(e,t){var n=this;this.container=e||r.createElement(\"div\"),this.$keepTextAreaAtCursor=!s.isOldIE,r.addCssClass(this.container,\"ace_editor\"),this.setTheme(t),this.$gutter=r.createElement(\"div\"),this.$gutter.className=\"ace_gutter\",this.container.appendChild(this.$gutter),this.$gutter.setAttribute(\"aria-hidden\",!0),this.scroller=r.createElement(\"div\"),this.scroller.className=\"ace_scroller\",this.container.appendChild(this.scroller),this.content=r.createElement(\"div\"),this.content.className=\"ace_content\",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on(\"changeGutterWidth\",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var i=this.$textLayer=new c(this.content);this.canvas=i.element,this.$markerFront=new l(this.content),this.$cursorLayer=new u(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new d(this.container,this),this.scrollBarH=new h(this.container,this),this.scrollBarV.addEventListener(\"scroll\",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener(\"scroll\",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener(\"changeCharacterSize\",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal(\"changeCharacterSize\",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new f(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit(\"renderer\",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,i.implement(this,m),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle(\"ace_nobold\",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off(\"changeNewLineMode\",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on(\"changeNewLineMode\",this.onChangeNewLineMode))},this.updateLines=function(e,t,n){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRow<t&&(this.$changedLines.lastRow=t)):this.$changedLines={firstRow:e,lastRow:t},this.$changedLines.lastRow<this.layerConfig.firstRow){if(!n)return;this.$changedLines.lastRow=this.layerConfig.lastRow}this.$changedLines.firstRow>this.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,i){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var r=this.container;i||(i=r.clientHeight||r.scrollHeight),n||(n=r.clientWidth||r.scrollWidth);var o=this.$updateCachedSize(e,t,n,i);if(!this.$size.scrollerHeight||!n&&!i)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(o|this.$changes,!0):this.$loop.schedule(o|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,n,i){i-=this.$extraHeight||0;var r=0,o=this.$size,s={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};return i&&(e||o.height!=i)&&(o.height=i,r|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+\"px\",r|=this.CHANGE_SCROLL),n&&(e||o.width!=n)&&(r|=this.CHANGE_SIZE,o.width=n,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+\"px\",o.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+\"px\",this.scroller.style.bottom=this.scrollBarH.getHeight()+\"px\",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(r|=this.CHANGE_FULL)),o.$dirty=!n||!i,r&&this._signal(\"resize\",s),r},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption(\"animatedScroll\",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption(\"showInvisibles\",e),this.session.$bidiHandler.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.getOption(\"showInvisibles\")},this.getDisplayIndentGuides=function(){return this.getOption(\"displayIndentGuides\")},this.setDisplayIndentGuides=function(e){this.setOption(\"displayIndentGuides\",e)},this.setShowPrintMargin=function(e){this.setOption(\"showPrintMargin\",e)},this.getShowPrintMargin=function(){return this.getOption(\"showPrintMargin\")},this.setPrintMarginColumn=function(e){this.setOption(\"printMarginColumn\",e)},this.getPrintMarginColumn=function(){return this.getOption(\"printMarginColumn\")},this.getShowGutter=function(){return this.getOption(\"showGutter\")},this.setShowGutter=function(e){return this.setOption(\"showGutter\",e)},this.getFadeFoldWidgets=function(){return this.getOption(\"fadeFoldWidgets\")},this.setFadeFoldWidgets=function(e){this.setOption(\"fadeFoldWidgets\",e)},this.setHighlightGutterLine=function(e){this.setOption(\"highlightGutterLine\",e)},this.getHighlightGutterLine=function(){return this.getOption(\"highlightGutterLine\")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+\"px\",this.$gutterLineHighlight.style.height=t+\"px\"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=r.createElement(\"div\");e.className=\"ace_layer ace_print-margin-layer\",this.$printMarginEl=r.createElement(\"div\"),this.$printMarginEl.className=\"ace_print-margin\",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+\"px\",t.visibility=this.$showPrintMargin?\"visible\":\"hidden\",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var i=this.textarea.style,r=this.lineHeight;if(t<0||t>e.height-r)return void(i.top=i.left=\"0\");var o=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\\x01+/,\"\");o*=this.session.$getStringScreenWidth(s)[0]+2,r+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-o&&(n=this.$size.scrollerWidth-o),n+=this.gutterWidth,i.height=r+\"px\",i.width=o+\"px\",i.left=Math.min(n,this.$size.scrollerWidth-o)+\"px\",i.top=Math.min(t,this.$size.height-r)+\"px\"}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow;return this.session.documentToScreenRow(t,0)*e.lineHeight-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,i){var r=this.scrollMargin;r.top=0|e,r.bottom=0|t,r.right=0|i,r.left=0|n,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption(\"hScrollBarAlwaysVisible\",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption(\"vScrollBarAlwaysVisible\",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t)return void(this.$changes|=e);if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal(\"beforeRender\"),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var i=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;i>0&&(this.scrollTop=i,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+\"px\",this.content.style.marginTop=-n.offset+\"px\",this.content.style.width=n.width+2*this.$padding+\"px\",this.content.style.height=n.minHeight+\"px\"}return e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+\"px\",this.scroller.className=this.scrollLeft<=0?\"ace_scroller\":\"ace_scroller ace_scroll-left\"),e&this.CHANGE_FULL?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal(\"afterRender\")):e&this.CHANGE_SCROLL?(e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal(\"afterRender\")):(e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),void this._signal(\"afterRender\"))},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var i=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var r=this.container.clientWidth;this.container.style.height=n+\"px\",this.$updateCachedSize(!0,this.$gutterWidth,r,n),this.desiredHeight=n,this._signal(\"autosize\")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,i=this.session.getScreenLength(),r=i*this.lineHeight,o=this.$getLongestLine(),s=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),a=this.$horizScroll!==s;a&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var l=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,u=t.scrollerHeight+this.lineHeight,h=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;r+=h;var d=this.scrollMargin;this.session.setScrollTop(Math.max(-d.top,Math.min(this.scrollTop,r-t.scrollerHeight+d.bottom))),this.session.setScrollLeft(Math.max(-d.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+d.right)));var f=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-r+h<0||this.scrollTop>d.top),p=l!==f;p&&(this.$vScroll=f,this.scrollBarV.setVisible(f));var m,g,v=Math.ceil(u/this.lineHeight)-1,y=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),b=y+v,w=this.lineHeight;y=e.screenToDocumentRow(y,0);var C=e.getFoldLine(y);C&&(y=C.start.row),m=e.documentToScreenRow(y,0),g=e.getRowLength(y)*w,b=Math.min(e.screenToDocumentRow(b,0),e.getLength()-1),u=t.scrollerHeight+e.getRowLength(b)*w+g,c=this.scrollTop-m*w;var A=0;return this.layerConfig.width!=o&&(A=this.CHANGE_H_SCROLL),(a||p)&&(A=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal(\"scrollbarVisibilityChanged\"),p&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:y,firstRowScreen:m,lastRow:b,lineHeight:w,characterWidth:this.characterWidth,minHeight:u,maxHeight:r,offset:c,gutterOffset:w?Math.max(0,Math.ceil((c+t.height-t.scrollerHeight)/w)):0,height:this.$size.scrollerHeight},A},this.$updateLines=function(){if(this.$changedLines){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(!(e>n.lastRow+1||t<n.firstRow))return t===1/0?(this.$showGutter&&this.$gutterLayer.update(n),void this.$textLayer.update(n)):(this.$textLayer.updateLines(n,e,t),!0)}},this.$getLongestLine=function(){var e=this.session.getScreenWidth();return this.showInvisibles&&!this.session.$useWrapMode&&(e+=1),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t,n){if(0!==this.$size.scrollerHeight){var i=this.$cursorLayer.getPixelPosition(e),r=i.left,o=i.top,s=n&&n.top||0,a=n&&n.bottom||0,l=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;l+s>o?(t&&l+s>o+this.lineHeight&&(o-=t*this.$size.scrollerHeight),0===o&&(o=-this.scrollMargin.top),this.session.setScrollTop(o)):l+this.$size.scrollerHeight-a<o+this.lineHeight&&(t&&l+this.$size.scrollerHeight-a<o-this.lineHeight&&(o+=t*this.$size.scrollerHeight),this.session.setScrollTop(o+this.lineHeight-this.$size.scrollerHeight));var c=this.scrollLeft;c>r?(r<this.$padding+2*this.layerConfig.characterWidth&&(r=-this.scrollMargin.left),this.session.setScrollLeft(r)):c+this.$size.scrollerWidth<r+this.characterWidth?this.session.setScrollLeft(Math.round(r+this.characterWidth-this.$size.scrollerWidth)):c<=this.$padding&&r-c<this.characterWidth&&this.session.setScrollLeft(0)}},this.getScrollTop=function(){return this.session.getScrollTop()},this.getScrollLeft=function(){return this.session.getScrollLeft()},this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight},this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1)},this.scrollToRow=function(e){this.session.setScrollTop(e*this.lineHeight)},this.alignCursor=function(e,t){\"number\"==typeof e&&(e={row:e,column:0});var n=this.$cursorLayer.getPixelPosition(e),i=this.$size.scrollerHeight-this.lineHeight,r=n.top-i*(t||0);return this.session.setScrollTop(r),r},this.STEPS=8,this.$calcSteps=function(e,t){var n=0,i=this.STEPS,r=[];for(n=0;n<i;++n)r.push(function(e,t,n){return n*(Math.pow(e-1,3)+1)+t}(n/this.STEPS,e,t-e));return r},this.scrollToLine=function(e,t,n,i){var r=this.$cursorLayer.getPixelPosition({row:e,column:0}),o=r.top;t&&(o-=this.$size.scrollerHeight/2);var s=this.scrollTop;this.session.setScrollTop(o),!1!==n&&this.animateScrolling(s,i)},this.animateScrolling=function(e,t){var n=this.scrollTop;if(this.$animatedScroll){var i=this;if(e!=n){if(this.$scrollAnimation){var r=this.$scrollAnimation.steps;if(r.length&&(e=r[0])==n)return}var o=i.$calcSteps(e,n);this.$scrollAnimation={from:e,to:n,steps:o},clearInterval(this.$timer),i.session.setScrollTop(o.shift()),i.session.$scrollTop=n,this.$timer=setInterval(function(){o.length?(i.session.setScrollTop(o.shift()),i.session.$scrollTop=n):null!=n?(i.session.$scrollTop=-1,i.session.setScrollTop(n),n=null):(i.$timer=clearInterval(i.$timer),i.$scrollAnimation=null,t&&t())},10)}}},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){return t<0&&this.session.getScrollTop()>=1-this.scrollMargin.top||(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0)))},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=e+this.scrollLeft-n.left-this.$padding,r=i/this.characterWidth,o=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:o,column:s,side:r-s>0?1:-1,offsetX:i}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=e+this.scrollLeft-n.left-this.$padding,r=Math.round(i/this.characterWidth),o=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(o,Math.max(r,0),i)},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=this.session.documentToScreenPosition(e,t),r=this.$padding+(this.session.$bidiHandler.isBidiRow(i.row,e)?this.session.$bidiHandler.getPosLeft(i.column):Math.round(i.column*this.characterWidth)),o=i.row*this.lineHeight;return{pageX:n.left+r-this.scrollLeft,pageY:n.top+o-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,\"ace_focus\")},this.visualizeBlur=function(){r.removeCssClass(this.container,\"ace_focus\")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,r.addCssClass(this.textarea,\"ace_composition\"),this.textarea.style.cssText=\"\",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(r.removeCssClass(this.textarea,\"ace_composition\"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function n(n){if(i.$themeId!=e)return t&&t();if(!n||!n.cssClass)throw new Error(\"couldn't load module \"+e+\" or it didn't call define\");r.importCssString(n.cssText,n.cssClass,i.container.ownerDocument),i.theme&&r.removeCssClass(i.container,i.theme.cssClass);var o=\"padding\"in n?n.padding:\"padding\"in(i.theme||{})?4:i.$padding;i.$padding&&o!=i.$padding&&i.setPadding(o),i.$theme=n.cssClass,i.theme=n,r.addCssClass(i.container,n.cssClass),r.setCssClass(i.container,\"ace_dark\",n.isDark),i.$size&&(i.$size.width=0,i.$updateSizeAsync()),i._dispatchEvent(\"themeLoaded\",{theme:n}),t&&t()}var i=this;if(this.$themeId=e,i._dispatchEvent(\"themeChange\",{theme:e}),e&&\"string\"!=typeof e)n(e);else{var s=e||this.$options.theme.initialValue;o.loadModule([\"theme\",s],n)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){r.setCssClass(this.container,e,!1!==t)},this.unsetStyle=function(e){r.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),o.defineOptions(g.prototype,\"renderer\",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){\"number\"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?\"block\":\"none\",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){r.setCssClass(this.$gutter,\"ace_fade-fold-widgets\",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight)return this.$gutterLineHighlight=r.createElement(\"div\"),this.$gutterLineHighlight.className=\"ace_gutter-active-line\",void this.$gutter.appendChild(this.$gutterLineHighlight);this.$gutterLineHighlight.style.display=e?\"\":\"none\",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){\"number\"==typeof e&&(e+=\"px\"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:\"./theme/textmate\",handlesSet:!0}}),t.VirtualRenderer=g}),ace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"],function(e,t,n){\"use strict\";function i(e,t){var n=t.src;s.qualifyURL(e);try{return new Blob([n],{type:\"application/javascript\"})}catch(e){var i=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,r=new i;return r.append(n),r.getBlob(\"application/javascript\")}}function r(e,t){var n=i(e,t),r=window.URL||window.webkitURL,o=r.createObjectURL(n);return new Worker(o)}var o=e(\"../lib/oop\"),s=e(\"../lib/net\"),a=e(\"../lib/event_emitter\").EventEmitter,l=e(\"../config\"),c=function(t,n,i,o,s){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),l.get(\"packaged\")||!e.toUrl)o=o||l.moduleUrl(n.id,\"worker\");else{var a=this.$normalizePath;o=o||a(e.toUrl(\"ace/worker/worker.js\",null,\"_\"));var c={};t.forEach(function(t){c[t]=a(e.toUrl(t,null,\"_\").replace(/(\\.js)?(\\?.*)?$/,\"\"))})}this.$worker=r(o,n),s&&this.send(\"importScripts\",s),this.$worker.postMessage({init:!0,tlns:c,module:n.id,classname:i}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){o.implement(this,a),this.onMessage=function(e){var t=e.data;switch(t.type){case\"event\":this._signal(t.name,{data:t.data});break;case\"call\":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case\"error\":this.reportError(t.data);break;case\"log\":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return s.qualifyURL(e)},this.terminate=function(){this._signal(\"terminate\",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off(\"change\",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var i=this.callbackId++;this.callbacks[i]=n,t.push(i)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(e){console.error(e.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call(\"setValue\",[e.getValue()]),e.on(\"change\",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),\"insert\"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call(\"setValue\",[this.$doc.getValue()]):this.emit(\"change\",{data:e}))}}).call(c.prototype);var u=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var i=null,r=!1,o=Object.create(a),s=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){s.messageBuffer.push(e),i&&(r?setTimeout(c):c())},this.setEmitSync=function(e){r=e};var c=function(){var e=s.messageBuffer.shift();e.command?i[e.command].apply(i,e.args):e.event&&o._signal(e.event,e.data)};o.postMessage=function(e){s.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:\"call\",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:\"event\",name:e,data:t})},l.loadModule([\"worker\",t],function(e){for(i=new e[n](o);s.messageBuffer.length;)c()})};u.prototype=c.prototype,t.UIWorkerClient=u,t.WorkerClient=c,t.createWorker=r}),ace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"],function(e,t,n){\"use strict\";var i=e(\"./range\").Range,r=e(\"./lib/event_emitter\").EventEmitter,o=e(\"./lib/oop\"),s=function(e,t,n,i,r,o){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=r,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on(\"change\",this.$onUpdate),this.$others=i,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=n;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on(\"changeCursor\",this.$onCursorChange)};(function(){o.implement(this,r),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=n.addMarker(new i(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var i=t.createAnchor(n.row,n.column);i.$insertRight=!0,i.detach(),e.others.push(i)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new i(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e<this.others.length;e++)this.session.removeMarker(this.others[e].markerId)}},this.onUpdate=function(e){if(this.$updating)return this.updateAnchors(e);var t=e;if(t.start.row===t.end.row&&t.start.row===this.pos.row){this.$updating=!0;var n=\"insert\"===e.action?t.end.column-t.start.column:t.start.column-t.end.column,r=t.start.column>=this.pos.column&&t.start.column<=this.pos.column+this.length+1,o=t.start.column-this.pos.column;if(this.updateAnchors(e),r&&(this.length+=n),r&&!this.session.$fromUndo)if(\"insert\"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.insertMergedLines(l,e.lines)}else if(\"remove\"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.remove(new i(l.row,l.column,l.row,l.column-n))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,n=function(n,r){t.removeMarker(n.markerId),n.markerId=t.addMarker(new i(n.row,n.column,n.row,n.column+e.length),r,null,!1)};n(this.pos,this.mainClass);for(var r=this.others.length;r--;)n(this.others[r],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit(\"cursorEnter\",e)):(this.hideOtherMarkers(),this._emit(\"cursorLeave\",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener(\"change\",this.$onUpdate),this.session.selection.removeEventListener(\"changeCursor\",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,n=0;n<t;n++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}}).call(s.prototype),t.PlaceHolder=s}),ace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"],function(e,t,n){function i(e,t){return e.row==t.row&&e.column==t.column}function r(e){var t=e.domEvent,n=t.altKey,r=t.shiftKey,a=t.ctrlKey,l=e.getAccelKey(),c=e.getButton();if(a&&s.isMac&&(c=t.button),e.editor.inMultiSelectMode&&2==c)return void e.editor.textInput.onContextMenu(e.domEvent);if(!a&&!n&&!l)return void(0===c&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode());if(0===c){var u,h=e.editor,d=h.selection,f=h.inMultiSelectMode,p=e.getDocumentPosition(),m=d.getCursor(),g=e.inSelection()||d.isEmpty()&&i(p,m),v=e.x,y=e.y,b=function(e){v=e.clientX,y=e.clientY},w=h.session,C=h.renderer.pixelToScreenCoordinates(v,y),A=C;if(h.$mouseHandler.$enableJumpToDef)a&&n||l&&n?u=r?\"block\":\"add\":n&&h.$blockSelectEnabled&&(u=\"block\");else if(l&&!n){if(u=\"add\",!f&&r)return}else n&&h.$blockSelectEnabled&&(u=\"block\");if(u&&s.isMac&&t.ctrlKey&&h.$mouseHandler.cancelContextMenu(),\"add\"==u){if(!f&&g)return;if(!f){var E=d.toOrientedRange();h.addSelectionMarker(E)}var x=d.rangeList.rangeAtPoint(p);h.$blockScrolling++,h.inVirtualSelectionMode=!0,r&&(x=null,E=d.ranges[0]||E,h.removeSelectionMarker(E)),h.once(\"mouseup\",function(){var e=d.toOrientedRange();x&&e.isEmpty()&&i(x.cursor,e.cursor)?d.substractPoint(e.cursor):(r?d.substractPoint(E.cursor):E&&(h.removeSelectionMarker(E),d.addRange(E)),d.addRange(e)),h.$blockScrolling--,h.inVirtualSelectionMode=!1})}else if(\"block\"==u){e.stop(),h.inVirtualSelectionMode=!0;var F,S=[],$=function(){var e=h.renderer.pixelToScreenCoordinates(v,y),t=w.screenToDocumentPosition(e.row,e.column,e.offsetX);i(A,e)&&i(t,d.lead)||(A=e,h.$blockScrolling++,h.selection.moveToPosition(t),h.renderer.scrollCursorIntoView(),h.removeSelectionMarkers(S),S=d.rectangularRangeBlock(A,C),h.$mouseHandler.$clickSelection&&1==S.length&&S[0].isEmpty()&&(S[0]=h.$mouseHandler.$clickSelection.clone()),S.forEach(h.addSelectionMarker,h),h.updateSelectionMarkers(),h.$blockScrolling--)};h.$blockScrolling++,f&&!l?d.toSingleRange():!f&&l&&(F=d.toOrientedRange(),h.addSelectionMarker(F)),r?C=w.documentToScreenPosition(d.lead):d.moveToPosition(p),h.$blockScrolling--,A={row:-1,column:-1};var k=function(e){clearInterval(B),h.removeSelectionMarkers(S),S.length||(S=[d.toOrientedRange()]),h.$blockScrolling++,F&&(h.removeSelectionMarker(F),d.toSingleRange(F));for(var t=0;t<S.length;t++)d.addRange(S[t]);h.inVirtualSelectionMode=!1,h.$mouseHandler.$clickSelection=null,h.$blockScrolling--},_=$;o.capture(h.container,b,k);var B=setInterval(function(){_()},20);return e.preventDefault()}}}var o=e(\"../lib/event\"),s=e(\"../lib/useragent\");t.onMouseDown=r}),ace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"],function(e,t,n){t.defaultCommands=[{name:\"addCursorAbove\",exec:function(e){e.selectMoreLines(-1)},bindKey:{win:\"Ctrl-Alt-Up\",mac:\"Ctrl-Alt-Up\"},scrollIntoView:\"cursor\",readOnly:!0},{name:\"addCursorBelow\",exec:function(e){e.selectMoreLines(1)},bindKey:{win:\"Ctrl-Alt-Down\",mac:\"Ctrl-Alt-Down\"},scrollIntoView:\"cursor\",readOnly:!0},{name:\"addCursorAboveSkipCurrent\",exec:function(e){e.selectMoreLines(-1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Up\",mac:\"Ctrl-Alt-Shift-Up\"},scrollIntoView:\"cursor\",readOnly:!0},{name:\"addCursorBelowSkipCurrent\",exec:function(e){e.selectMoreLines(1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Down\",mac:\"Ctrl-Alt-Shift-Down\"},scrollIntoView:\"cursor\",readOnly:!0},{name:\"selectMoreBefore\",exec:function(e){e.selectMore(-1)},bindKey:{win:\"Ctrl-Alt-Left\",mac:\"Ctrl-Alt-Left\"},scrollIntoView:\"cursor\",readOnly:!0},{name:\"selectMoreAfter\",exec:function(e){e.selectMore(1)},bindKey:{win:\"Ctrl-Alt-Right\",mac:\"Ctrl-Alt-Right\"},scrollIntoView:\"cursor\",readOnly:!0},{name:\"selectNextBefore\",exec:function(e){e.selectMore(-1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Left\",mac:\"Ctrl-Alt-Shift-Left\"},scrollIntoView:\"cursor\",readOnly:!0},{name:\"selectNextAfter\",exec:function(e){e.selectMore(1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Right\",mac:\"Ctrl-Alt-Shift-Right\"},scrollIntoView:\"cursor\",readOnly:!0},{name:\"splitIntoLines\",exec:function(e){e.multiSelect.splitIntoLines()},bindKey:{win:\"Ctrl-Alt-L\",mac:\"Ctrl-Alt-L\"},readOnly:!0},{name:\"alignCursors\",exec:function(e){e.alignCursors()},bindKey:{win:\"Ctrl-Alt-A\",mac:\"Ctrl-Alt-A\"},scrollIntoView:\"cursor\"},{name:\"findAll\",exec:function(e){e.findAll()},bindKey:{win:\"Ctrl-Alt-K\",mac:\"Ctrl-Alt-G\"},scrollIntoView:\"cursor\",readOnly:!0}],t.multiSelectCommands=[{name:\"singleSelection\",bindKey:\"esc\",exec:function(e){e.exitMultiSelectMode()},scrollIntoView:\"cursor\",readOnly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var i=e(\"../keyboard/hash_handler\").HashHandler;t.keyboardHandler=new i(t.multiSelectCommands)}),ace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"],function(e,t,n){function i(e,t,n){return m.$options.wrap=!0,m.$options.needle=t,m.$options.backwards=-1==n,m.find(e)}function r(e,t){return e.row==t.row&&e.column==t.column}function o(e){e.$multiselectOnSessionChange||(e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on(\"changeSession\",e.$multiselectOnSessionChange),e.on(\"mousedown\",u),e.commands.addCommands(f.defaultCommands),s(e))}function s(e){function t(t){i&&(e.renderer.setMouseCursor(\"\"),i=!1)}var n=e.textInput.getElement(),i=!1;h.addListener(n,\"keydown\",function(n){var r=18==n.keyCode&&!(n.ctrlKey||n.shiftKey||n.metaKey);e.$blockSelectEnabled&&r?i||(e.renderer.setMouseCursor(\"crosshair\"),i=!0):i&&t()}),h.addListener(n,\"keyup\",t),h.addListener(n,\"blur\",t)}var a=e(\"./range_list\").RangeList,l=e(\"./range\").Range,c=e(\"./selection\").Selection,u=e(\"./mouse/multi_select_handler\").onMouseDown,h=e(\"./lib/event\"),d=e(\"./lib/lang\"),f=e(\"./commands/multi_select_commands\");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var p=e(\"./search\").Search,m=new p,g=e(\"./edit_session\").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(g.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(e){if(!this.inMultiSelectMode&&0===this.rangeCount){var n=this.toOrientedRange();if(this.rangeList.add(n),this.rangeList.add(e),2!=this.rangeList.ranges.length)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var i=this.rangeList.add(e);return this.$onAddRange(e),i.length&&this.$onRemoveRange(i),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal(\"multiSelect\"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal(\"addRange\",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var i=this.ranges.indexOf(e[n]);this.ranges.splice(i,1)}this._signal(\"removeRange\",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal(\"singleSelect\"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new a,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),i=this.isBackwards(),r=n.start.row,o=n.end.row;if(r==o){if(i)var s=n.end,a=n.start;else var s=n.start,a=n.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.fromPoints(s,s))}var c=[],u=this.getLineRange(r,!0);u.start.column=n.start.column,c.push(u);for(var h=r+1;h<o;h++)c.push(this.getLineRange(h,!0));u=this.getLineRange(o,!0),u.end.column=n.end.column,c.push(u),c.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var i=this.session.documentToScreenPosition(this.selectionLead),r=this.session.documentToScreenPosition(this.selectionAnchor);this.rectangularRangeBlock(i,r).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var i=[],o=e.column<t.column;if(o)var s=e.column,a=t.column,c=e.offsetX,u=t.offsetX;else var s=t.column,a=e.column,c=t.offsetX,u=e.offsetX;var h=e.row<t.row;if(h)var d=e.row,f=t.row;else var d=t.row,f=e.row;s<0&&(s=0),d<0&&(d=0),d==f&&(n=!0);for(var p=d;p<=f;p++){var m=l.fromPoints(this.session.screenToDocumentPosition(p,s,c),this.session.screenToDocumentPosition(p,a,u));if(m.isEmpty()){if(g&&r(m.end,g))break;var g=m.end}m.cursor=o?m.start:m.end,i.push(m)}if(h&&i.reverse(),!n){for(var v=i.length-1;i[v].isEmpty()&&v>0;)v--;if(v>0)for(var y=0;i[y].isEmpty();)y++;for(var b=v;b>=y;b--)i[b].isEmpty()&&i.splice(b,1)}return i}}.call(c.prototype);var v=e(\"./editor\").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,\"ace_selection\",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,n=e.length;n--;){var i=e[n];if(i.marker){this.session.removeMarker(i.marker);var r=t.indexOf(i);-1!=r&&t.splice(r,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle(\"ace_multiselect\"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler(\"exec\",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle(\"ace_multiselect\"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler(\"exec\",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit(\"changeSelection\"))},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(n.multiSelect){if(t.multiSelectAction)\"forEach\"==t.multiSelectAction?i=n.forEachSelection(t,e.args):\"forEachLine\"==t.multiSelectAction?i=n.forEachSelection(t,e.args,!0):\"single\"==t.multiSelectAction?(n.exitMultiSelectMode(),i=t.exec(n,e.args||{})):i=t.multiSelectAction(n,e.args||{});else{var i=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}return i}},this.forEachSelection=function(e,t,n){if(!this.inVirtualSelectionMode){var i,r=n&&n.keepOrder,o=1==n||n&&n.$byLines,s=this.session,a=this.selection,l=a.rangeList,u=(r?a:l).ranges;if(!u.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var h=a._eventRegistry;a._eventRegistry={};var d=new c(s);this.inVirtualSelectionMode=!0;for(var f=u.length;f--;){if(o)for(;f>0&&u[f].start.row==u[f-1].end.row;)f--;d.fromOrientedRange(u[f]),d.index=f,this.selection=s.selection=d;var p=e.exec?e.exec(this,t||{}):e(this,t||{});i||void 0===p||(i=p),d.toOrientedRange(u[f])}d.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=h,a.mergeOverlappingRanges();var m=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),m&&m.from==m.to&&this.renderer.animateScrolling(m.from),i}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e=\"\";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,n=[],i=0;i<t.length;i++)n.push(this.session.getTextRange(t[i]));var r=this.session.getDocument().getNewLineCharacter();e=n.join(r),e.length==(n.length-1)*r.length&&(e=\"\")}else this.selection.isEmpty()||(e=this.session.getTextRange(this.getSelectionRange()));return e},this.$checkMultiselectChange=function(e,t){if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var n=this.multiSelect.ranges[0];if(this.multiSelect.isEmpty()&&t==this.multiSelect.anchor)return;var i=t==this.multiSelect.anchor?n.cursor==n.start?n.end:n.start:n.cursor;i.row==t.row&&this.session.$clipPositionToDocument(i.row,i.column).column==t.column||this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange())}},this.findAll=function(e,t,n){if(t=t||{},t.needle=e||t.needle,void 0==t.needle){var i=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();t.needle=this.session.getTextRange(i)}this.$search.set(t);var r=this.$search.findAll(this.session);if(!r.length)return 0;this.$blockScrolling+=1;var o=this.multiSelect;n||o.toSingleRange(r[0]);for(var s=r.length;s--;)o.addRange(r[s],!0);return i&&o.rangeList.rangeAtPoint(i.start)&&o.addRange(i,!0),this.$blockScrolling-=1,r.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),i=n.cursor==n.end,r=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(r.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(r.row+e,r.column);if(n.isEmpty())var s=o;else var a=this.session.documentToScreenPosition(i?n.end:n.start),s=this.session.screenToDocumentPosition(a.row+e,a.column);if(i){var c=l.fromPoints(o,s);c.cursor=c.start}else{var c=l.fromPoints(s,o);c.cursor=c.end}if(c.desiredColumn=r.column,this.selection.inMultiSelectMode){if(t)var u=n.cursor}else this.selection.addRange(n);this.selection.addRange(c),u&&this.selection.substractPoint(u)},this.transposeSelections=function(e){for(var t=this.session,n=t.multiSelect,i=n.ranges,r=i.length;r--;){var o=i[r];if(o.isEmpty()){var s=t.getWordRange(o.start.row,o.start.column);o.start.row=s.start.row,o.start.column=s.start.column,o.end.row=s.end.row,o.end.column=s.end.column}}n.mergeOverlappingRanges();for(var a=[],r=i.length;r--;){var o=i[r];a.unshift(t.getTextRange(o))}e<0?a.unshift(a.pop()):a.push(a.shift());for(var r=i.length;r--;){var o=i[r],s=o.clone();t.replace(o,a[r]),o.start.row=s.start.row,o.start.column=s.start.column}},this.selectMore=function(e,t,n){var r=this.session,o=r.multiSelect,s=o.toOrientedRange();if(!s.isEmpty()||(s=r.getWordRange(s.start.row,s.start.column),s.cursor=-1==e?s.start:s.end,this.multiSelect.addRange(s),!n)){var a=r.getTextRange(s),l=i(r,a,e);l&&(l.cursor=-1==e?l.start:l.end,this.$blockScrolling+=1,this.session.unfold(l),this.multiSelect.addRange(l),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(s.cursor)}},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges,i=-1,r=n.filter(function(e){if(e.cursor.row==i)return!0;i=e.cursor.row});if(n.length&&r.length!=n.length-1){r.forEach(function(e){t.substractPoint(e.cursor)});var o=0,s=1/0,a=n.map(function(t){var n=t.cursor,i=e.getLine(n.row),r=i.substr(n.column).search(/\\S/g);return-1==r&&(r=0),n.column>o&&(o=n.column),r<s&&(s=r),r});n.forEach(function(t,n){var i=t.cursor,r=o-i.column,c=a[n]-s;r>c?e.insert(i,d.stringRepeat(\" \",r-c)):e.remove(new l(i.row,i.column,i.row,i.column-r+c)),t.start.column=t.end.column=o,t.start.row=t.end.row=i.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),u=c.start.row,h=c.end.row,f=u==h;if(f){var p,m=this.session.getLength();do{p=this.session.getLine(h)}while(/[=:]/.test(p)&&++h<m);do{p=this.session.getLine(u)}while(/[=:]/.test(p)&&--u>0);u<0&&(u=0),h>=m&&(h=m-1)}var g=this.session.removeFullLines(u,h);g=this.$reAlignText(g,f),this.session.insert({row:u,column:0},g.join(\"\\n\")+\"\\n\"),f||(c.start.column=0,c.end.column=g[g.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function n(e){return d.stringRepeat(\" \",e)}function i(e){return e[2]?n(s)+e[2]+n(a-e[2].length+l)+e[4].replace(/^([=:])\\s+/,\"$1 \"):e[0]}function r(e){return e[2]?n(s+a-e[2].length)+e[2]+n(l,\" \")+e[4].replace(/^([=:])\\s+/,\"$1 \"):e[0]}function o(e){return e[2]?n(s)+e[2]+n(l)+e[4].replace(/^([=:])\\s+/,\"$1 \"):e[0]}var s,a,l,c=!0,u=!0;return e.map(function(e){var t=e.match(/(\\s*)(.*?)(\\s*)([=:].*)/);return t?null==s?(s=t[1].length,a=t[2].length,l=t[3].length,t):(s+a+l!=t[1].length+t[2].length+t[3].length&&(u=!1),s!=t[1].length&&(c=!1),s>t[1].length&&(s=t[1].length),a<t[2].length&&(a=t[2].length),l>t[3].length&&(l=t[3].length),t):[e]}).map(t?i:c?u?r:i:o)}}).call(v.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off(\"addRange\",this.$onAddRange),n.multiSelect.off(\"removeRange\",this.$onRemoveRange),n.multiSelect.off(\"multiSelect\",this.$onMultiSelect),n.multiSelect.off(\"singleSelect\",this.$onSingleSelect),n.multiSelect.lead.off(\"change\",this.$checkMultiselectChange),n.multiSelect.anchor.off(\"change\",this.$checkMultiselectChange)),t&&(t.multiSelect.on(\"addRange\",this.$onAddRange),t.multiSelect.on(\"removeRange\",this.$onRemoveRange),t.multiSelect.on(\"multiSelect\",this.$onMultiSelect),t.multiSelect.on(\"singleSelect\",this.$onSingleSelect),t.multiSelect.lead.on(\"change\",this.$checkMultiselectChange),t.multiSelect.anchor.on(\"change\",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=o,e(\"./config\").defineOptions(v.prototype,\"editor\",{enableMultiselect:{set:function(e){o(this),e?(this.on(\"changeSession\",this.$multiselectOnSessionChange),this.on(\"mousedown\",u)):(this.off(\"changeSession\",this.$multiselectOnSessionChange),this.off(\"mousedown\",u))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){\"use strict\";var i=e(\"../../range\").Range,r=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);return this.foldingStartMarker.test(i)?\"start\":\"markbeginend\"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(i)?\"end\":\"\"},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var r=/\\S/,o=e.getLine(t),s=o.search(r);if(-1!=s){for(var a=n||o.length,l=e.getLength(),c=t,u=t;++t<l;){var h=e.getLine(t).search(r);if(-1!=h){if(h<=s)break;u=t}}if(u>c){var d=e.getLine(u).length;return new i(c,a,u,d)}}},this.openingBracketBlock=function(e,t,n,r,o){var s={row:n,column:r+1},a=e.$findClosingBracket(t,s,o);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),\"start\"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),i.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,n,r,o){var s={row:n,column:r},a=e.$findOpeningBracket(t,s);if(a)return a.column++,s.column--,i.fromPoints(a,s)}}).call(r.prototype)}),ace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){\"use strict\";t.isDark=!1,t.cssClass=\"ace-tm\",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;}',e(\"../lib/dom\").importCssString(t.cssText,t.cssClass)}),ace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/range\"],function(e,t,n){\"use strict\";function i(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on(\"change\",this.updateOnChange),this.session.on(\"changeFold\",this.updateOnFold),this.session.on(\"changeEditor\",this.$onChangeEditor)}var r=(e(\"./lib/oop\"),e(\"./lib/dom\"));e(\"./range\").Range;(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on(\"beforeRender\",this.measureWidgets),e.renderer.on(\"afterRender\",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off(\"beforeRender\",this.measureWidgets),t.renderer.off(\"afterRender\",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(n&&e.action){for(var i=e.data,r=i.start.row,o=i.end.row,s=\"add\"==e.action,a=r+1;a<o;a++)n[a]&&(n[a].hidden=s);n[o]&&(s?n[r]?n[o].hidden=s:n[r]=n[o]:(n[r]==n[o]&&(n[r]=void 0),n[o].hidden=s))}},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(t){var n=e.start.row,i=e.end.row-n;if(0===i);else if(\"remove\"==e.action){var r=t.splice(n+1,i);r.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var o=new Array(i);o.unshift(n,0),t.splice.apply(t,o),this.$updateRows()}}},this.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach(function(e,n){if(e)for(t=!1,e.row=n;e.$oldWidget;)e.$oldWidget.row=n,e=e.$oldWidget}),t&&(this.session.lineWidgets=null)}},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e.session=this.session;var n=this.editor.renderer;e.html&&!e.el&&(e.el=r.createElement(\"div\"),e.el.innerHTML=e.html),e.el&&(r.addCssClass(e.el,\"ace_lineWidgetContainer\"),e.el.style.position=\"absolute\",e.el.style.zIndex=5,n.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),null==e.pixelHeight&&(e.pixelHeight=e.el.offsetHeight),null==e.rowCount&&(e.rowCount=e.pixelHeight/n.layerConfig.lineHeight);var i=this.session.getFoldAt(e.row,0);if(e.$fold=i,i){var o=this.session.lineWidgets;e.row!=i.end.row||o[i.start.row]?e.hidden=!0:o[i.start.row]=e}return this.session._emit(\"changeFold\",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,n),this.onWidgetChanged(e),e},this.removeLineWidget=function(e){if(e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(e){}if(this.session.lineWidgets){var t=this.session.lineWidgets[e.row];if(t==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else for(;t;){if(t.$oldWidget==e){t.$oldWidget=e.$oldWidget;break}t=t.$oldWidget}}this.session._emit(\"changeFold\",{data:{start:{row:e.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(e){for(var t=this.session.lineWidgets,n=t&&t[e],i=[];n;)i.push(n),n=n.$oldWidget;return i},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,i=t.layerConfig;if(n&&n.length){for(var r=1/0,o=0;o<n.length;o++){var s=n[o];if(s&&s.el&&s.session==this.session){if(!s._inDocument){if(this.session.lineWidgets[s.row]!=s)continue;s._inDocument=!0,t.container.appendChild(s.el)}s.h=s.el.offsetHeight,s.fixedWidth||(s.w=s.el.offsetWidth,s.screenWidth=Math.ceil(s.w/i.characterWidth));var a=s.h/i.lineHeight;s.coverLine&&(a-=this.session.getRowLineCount(s.row))<0&&(a=0),s.rowCount!=a&&(s.rowCount=a,s.row<r&&(r=s.row))}}r!=1/0&&(this.session._emit(\"changeFold\",{data:{start:{row:r}}}),this.session.lineWidgetWidth=null),this.session._changedWidgets=[]}},this.renderWidgets=function(e,t){var n=t.layerConfig,i=this.session.lineWidgets;if(i){for(var r=Math.min(this.firstRow,n.firstRow),o=Math.max(this.lastRow,n.lastRow,i.length);r>0&&!i[r];)r--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var s=r;s<=o;s++){var a=i[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+\"px\";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=n.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-n.offset+\"px\";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+\"px\",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=n.width+2*n.padding+\"px\"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+\"px\":a.el.style.right=\"\"}}}}}).call(i.prototype),t.LineWidgets=i}),ace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\"],function(e,t,n){\"use strict\";function i(e,t,n){for(var i=0,r=e.length-1;i<=r;){var o=i+r>>1,s=n(t,e[o]);if(s>0)i=o+1;else{if(!(s<0))return o;r=o-1}}return-(i+1)}function r(e,t,n){var r=e.getAnnotations().sort(a.comparePoints);if(r.length){var o=i(r,{row:t,column:-1},a.comparePoints);o<0&&(o=-o-1),o>=r.length?o=n>0?0:r.length-1:0===o&&n<0&&(o=r.length-1);var s=r[o];if(s&&n){if(s.row===t){do{s=r[o+=n]}while(s&&s.row===t);if(!s)return r.slice()}var l=[];t=s.row;do{l[n<0?\"unshift\":\"push\"](s),s=r[o+=n]}while(s&&s.row==t);return l.length&&l}}}var o=e(\"../line_widgets\").LineWidgets,s=e(\"../lib/dom\"),a=e(\"../range\").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new o(n),n.widgetManager.attach(e));var i=e.getCursorPosition(),a=i.row,l=n.widgetManager.getWidgetsAtRow(a).filter(function(e){return\"errorMarker\"==e.type})[0];l?l.destroy():a-=t;var c,u=r(n,a,t);if(u){var h=u[0];i.column=(h.pos&&\"number\"!=typeof h.column?h.pos.sc:h.column)||0,i.row=h.row,c=e.renderer.$gutterLayer.$annotations[i.row]}else{if(l)return;c={text:[\"Looks good!\"],className:\"ace_ok\"}}e.session.unfold(i.row),e.selection.moveToPosition(i);var d={row:i.row,fixedWidth:!0,coverGutter:!0,el:s.createElement(\"div\"),type:\"errorMarker\"},f=d.el.appendChild(s.createElement(\"div\")),p=d.el.appendChild(s.createElement(\"div\"));p.className=\"error_widget_arrow \"+c.className;var m=e.renderer.$cursorLayer.getPixelPosition(i).left;p.style.left=m+e.renderer.gutterWidth-5+\"px\",d.el.className=\"error_widget_wrapper\",f.className=\"error_widget \"+c.className,f.innerHTML=c.text.join(\"<br>\"),f.appendChild(s.createElement(\"div\"));var g=function(e,t,n){if(0===t&&(\"esc\"===n||\"return\"===n))return d.destroy(),{command:\"null\"}};d.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(g),n.widgetManager.removeLineWidget(d),e.off(\"changeSelection\",d.destroy),e.off(\"changeSession\",d.destroy),e.off(\"mouseup\",d.destroy),e.off(\"change\",d.destroy))},e.keyBinding.addKeyboardHandler(g),e.on(\"changeSelection\",d.destroy),e.on(\"changeSession\",d.destroy),e.on(\"mouseup\",d.destroy),e.on(\"change\",d.destroy),e.session.widgetManager.addLineWidget(d),d.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:d.el.offsetHeight})},s.importCssString(\"    .error_widget_wrapper {        background: inherit;        color: inherit;        border:none    }    .error_widget {        border-top: solid 2px;        border-bottom: solid 2px;        margin: 5px 0;        padding: 10px 40px;        white-space: pre-wrap;    }    .error_widget.ace_error, .error_widget_arrow.ace_error{        border-color: #ff5a5a    }    .error_widget.ace_warning, .error_widget_arrow.ace_warning{        border-color: #F1D817    }    .error_widget.ace_info, .error_widget_arrow.ace_info{        border-color: #5a5a5a    }    .error_widget.ace_ok, .error_widget_arrow.ace_ok{        border-color: #5aaa5a    }    .error_widget_arrow {        position: absolute;        border: solid 5px;        border-top-color: transparent!important;        border-right-color: transparent!important;        border-left-color: transparent!important;        top: -5px;    }\",\"\")}),ace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\"],function(e,t,i){\"use strict\";e(\"./lib/fixoldbrowsers\");var r=e(\"./lib/dom\"),o=e(\"./lib/event\"),s=e(\"./editor\").Editor,a=e(\"./edit_session\").EditSession,l=e(\"./undomanager\").UndoManager,c=e(\"./virtual_renderer\").VirtualRenderer;e(\"./worker/worker_client\"),e(\"./keyboard/hash_handler\"),e(\"./placeholder\"),e(\"./multi_select\"),e(\"./mode/folding/fold_mode\"),e(\"./theme/textmate\"),e(\"./ext/error_marker\"),t.config=e(\"./config\"),t.acequire=e,t.define=n(\"LGuY\"),t.edit=function(e){if(\"string\"==typeof e){var n=e;if(!(e=document.getElementById(n)))throw new Error(\"ace.edit can't find div #\"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var i=\"\";if(e&&/input|textarea/i.test(e.tagName)){var a=e;i=a.value,e=r.createElement(\"pre\"),a.parentNode.replaceChild(e,a)}else e&&(i=r.getInnerText(e),e.innerHTML=\"\");var l=t.createEditSession(i),u=new s(new c(e));u.setSession(l);var h={document:l,editor:u,onResize:u.resize.bind(u,null)};return a&&(h.textarea=a),o.addListener(window,\"resize\",h.onResize),u.on(\"destroy\",function(){o.removeListener(window,\"resize\",h.onResize),h.editor.container.env=null}),u.container.env=u.env=h,u},t.createEditSession=function(e,t){var n=new a(e,t);return n.setUndoManager(new l),n},t.EditSession=a,t.UndoManager=l,t.version=\"1.2.9\"}),function(){ace.acequire([\"ace/ace\"],function(e){e&&(e.config.init(!0),e.define=ace.define),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}(),e.exports=window.ace.acequire(\"ace/ace\")},kxFB:function(e,t){e.exports=function(e){return\"string\"!=typeof e?e:(/^['\"].*['\"]$/.test(e)&&(e=e.slice(1,-1)),/[\"'() \\t\\n]/.test(e)?'\"'+e.replace(/\"/g,'\\\\\"').replace(/\\n/g,\"\\\\n\")+'\"':e)}},lOnJ:function(e,t){e.exports=function(e){if(\"function\"!=typeof e)throw TypeError(e+\" is not a function!\");return e}},lYmS:function(e,t,n){\"use strict\";var i=n(\"OfYj\"),r=n(\"wen1\"),o=n(\"/gqF\"),s=n(\"60E9\"),a=n(\"TMTb\"),l=n(\"dfnb\"),c=n(\"Ea66\");t.a={mixins:[i.a,o.a,s.a,a.a,l.a,r.a],components:{bFormRadio:c.a},render:function(e){var t=this,n=t.$slots,i=t.formOptions.map(function(n,i){return e(\"b-form-radio\",{key:\"radio_\"+i+\"_opt\",props:{id:t.safeId(\"_BV_radio_\"+i+\"_opt_\"),name:t.name,value:n.value,required:Boolean(t.name&&t.required),disabled:n.disabled}},[e(\"span\",{domProps:{innerHTML:n.text}})])});return e(\"div\",{class:t.groupClasses,attrs:{id:t.safeId(),role:\"radiogroup\",tabindex:\"-1\",\"aria-required\":t.required?\"true\":null,\"aria-invalid\":t.computedAriaInvalid}},[n.first,i,n.default])},data:function(){return{localChecked:this.checked,is_RadioCheckGroup:!0}},model:{prop:\"checked\",event:\"input\"},props:{checked:{type:[String,Object,Number,Boolean],default:null},validated:{type:Boolean,default:!1},ariaInvalid:{type:[Boolean,String],default:!1},stacked:{type:Boolean,default:!1},buttons:{type:Boolean,default:!1},buttonVariant:{type:String,default:\"secondary\"}},watch:{checked:function(e,t){this.localChecked=this.checked},localChecked:function(e,t){this.$emit(\"input\",e)}},computed:{groupClasses:function(){return this.buttons?[\"btn-group-toggle\",this.stacked?\"btn-group-vertical\":\"btn-group\",this.size?\"btn-group-\"+this.size:\"\",this.validated?\"was-validated\":\"\"]:[this.sizeFormClass,this.stacked&&this.custom?\"custom-controls-stacked\":\"\",this.validated?\"was-validated\":\"\"]},computedAriaInvalid:function(){return!0===this.ariaInvalid||\"true\"===this.ariaInvalid||\"\"===this.ariaInvalid?\"true\":!1===this.get_State?\"true\":null},get_State:function(){return this.computedState}}}},ld9E:function(e,t,n){\"use strict\";function i(e){return\"string\"!=typeof e&&(e=String(e)),e.charAt(0).toLowerCase()+e.slice(1)}t.a=i},lktj:function(e,t,n){var i=n(\"Ibhu\"),r=n(\"xnc9\");e.exports=Object.keys||function(e){return i(e,r)}},m9Yj:function(e,t,n){\"use strict\";function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.a;if(n.i(r.b)(e))return e.map(t);var i={};for(var l in e)e.hasOwnProperty(l)&&(\"object\"===(void 0===l?\"undefined\":a(l))?i[t(l)]=n.i(o.a)({},e[l]):i[t(l)]=e[l]);return i}t.a=i;var r=n(\"GnGf\"),o=n(\"/CDJ\"),s=n(\"UWlG\"),a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e}},m9fp:function(e,t,n){\"use strict\";function i(e){for(var t in c)if(void 0!==e.style[t])return c[t];return null}var r=n(\"GKfW\"),o=n(\"tgmf\"),s=n(\"Kz7p\"),a=n(\"OfYj\"),l={next:{dirClass:\"carousel-item-left\",overlayClass:\"carousel-item-next\"},prev:{dirClass:\"carousel-item-right\",overlayClass:\"carousel-item-prev\"}},c={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"otransitionend oTransitionEnd\",transition:\"transitionend\"};t.a={mixins:[a.a],render:function(e){var t=this,n=e(\"div\",{ref:\"inner\",class:[\"carousel-inner\"],attrs:{id:t.safeId(\"__BV_inner_\"),role:\"list\"}},[t.$slots.default]),i=e(!1);t.controls&&(i=[e(\"a\",{class:[\"carousel-control-prev\"],attrs:{href:\"#\",role:\"button\",\"aria-controls\":t.safeId(\"__BV_inner_\")},on:{click:function(e){e.preventDefault(),e.stopPropagation(),t.prev()},keydown:function(e){var n=e.keyCode;n!==o.a.SPACE&&n!==o.a.ENTER||(e.preventDefault(),e.stopPropagation(),t.prev())}}},[e(\"span\",{class:[\"carousel-control-prev-icon\"],attrs:{\"aria-hidden\":\"true\"}}),e(\"span\",{class:[\"sr-only\"]},[t.labelPrev])]),e(\"a\",{class:[\"carousel-control-next\"],attrs:{href:\"#\",role:\"button\",\"aria-controls\":t.safeId(\"__BV_inner_\")},on:{click:function(e){e.preventDefault(),e.stopPropagation(),t.next()},keydown:function(e){var n=e.keyCode;n!==o.a.SPACE&&n!==o.a.ENTER||(e.preventDefault(),e.stopPropagation(),t.next())}}},[e(\"span\",{class:[\"carousel-control-next-icon\"],attrs:{\"aria-hidden\":\"true\"}}),e(\"span\",{class:[\"sr-only\"]},[t.labelNext])])]);var r=e(\"ol\",{class:[\"carousel-indicators\"],directives:[{name:\"show\",rawName:\"v-show\",value:t.indicators,expression:\"indicators\"}],attrs:{id:t.safeId(\"__BV_indicators_\"),\"aria-hidden\":t.indicators?\"false\":\"true\",\"aria-label\":t.labelIndicators,\"aria-owns\":t.safeId(\"__BV_inner_\")}},t.slides.map(function(n,i){return e(\"li\",{key:\"slide_\"+i,class:{active:i===t.index},attrs:{role:\"button\",id:t.safeId(\"__BV_indicator_\"+(i+1)+\"_\"),tabindex:t.indicators?\"0\":\"-1\",\"aria-current\":i===t.index?\"true\":\"false\",\"aria-label\":t.labelGotoSlide+\" \"+(i+1),\"aria-describedby\":t.slides[i].id||null,\"aria-controls\":t.safeId(\"__BV_inner_\")},on:{click:function(e){t.setSlide(i)},keydown:function(e){var n=e.keyCode;n!==o.a.SPACE&&n!==o.a.ENTER||(e.preventDefault(),e.stopPropagation(),t.setSlide(i))}}})}));return e(\"div\",{class:[\"carousel\",\"slide\"],style:{background:t.background},attrs:{role:\"region\",id:t.safeId(),\"aria-busy\":t.isSliding?\"true\":\"false\"},on:{mouseenter:t.pause,mouseleave:t.restart,focusin:t.pause,focusout:t.restart,keydown:function(e){var n=e.keyCode;n!==o.a.LEFT&&n!==o.a.RIGHT||(e.preventDefault(),e.stopPropagation(),t[n===o.a.LEFT?\"prev\":\"next\"]())}}},[n,i,r])},data:function(){return{index:this.value||0,isSliding:!1,intervalId:null,transitionEndEvent:null,slides:[]}},props:{labelPrev:{type:String,default:\"Previous Slide\"},labelNext:{type:String,default:\"Next Slide\"},labelGotoSlide:{type:String,default:\"Goto Slide\"},labelIndicators:{type:String,default:\"Select a slide to display\"},interval:{type:Number,default:5e3},indicators:{type:Boolean,default:!1},controls:{type:Boolean,default:!1},imgWidth:{type:[Number,String]},imgHeight:{type:[Number,String]},background:{type:String},value:{type:Number,default:0}},computed:{isCycling:function(){return Boolean(this.intervalId)}},methods:{setSlide:function(e){var t=this;if(\"undefined\"==typeof document||!document.visibilityState||!document.hidden){var n=this.slides.length;if(0!==n){if(this.isSliding)return void this.$once(\"sliding-end\",function(){return t.setSlide(e)});e=Math.floor(e),this.index=e>=n?0:e>=0?e:n-1}}},prev:function(){this.setSlide(this.index-1)},next:function(){this.setSlide(this.index+1)},pause:function(){this.isCycling&&(clearInterval(this.intervalId),this.intervalId=null,this.slides[this.index]&&(this.slides[this.index].tabIndex=0))},start:function(){var e=this;this.interval&&!this.isCycling&&(this.slides.forEach(function(e){e.tabIndex=-1}),this.intervalId=setInterval(function(){e.next()},Math.max(1e3,this.interval)))},restart:function(e){this.$el.contains(document.activeElement)||this.start()},updateSlides:function(){this.pause(),this.slides=n.i(s.q)(\".carousel-item\",this.$refs.inner);var e=this.slides.length,t=Math.max(0,Math.min(Math.floor(this.index),e-1));this.slides.forEach(function(i,r){var o=r+1;r===t?n.i(s.b)(i,\"active\"):n.i(s.c)(i,\"active\"),n.i(s.g)(i,\"aria-current\",r===t?\"true\":\"false\"),n.i(s.g)(i,\"aria-posinset\",String(o)),n.i(s.g)(i,\"aria-setsize\",String(e)),i.tabIndex=-1}),this.setSlide(t),this.start()}},watch:{value:function(e,t){e!==t&&this.setSlide(e)},interval:function(e,t){e!==t&&(e?(this.pause(),this.start()):this.pause())},index:function(e,t){var i=this;if(e!==t&&!this.isSliding){var r=e>t?l.next:l.prev;0===t&&e===this.slides.length-1?r=l.prev:t===this.slides.length-1&&0===e&&(r=l.next);var o=this.slides[t],a=this.slides[e];if(o&&a){this.isSliding=!0,this.$emit(\"sliding-start\",e),this.$emit(\"input\",this.index),a.classList.add(r.overlayClass),n.i(s.v)(a),n.i(s.b)(o,r.dirClass),n.i(s.b)(a,r.dirClass);var c=!1,u=function t(l){if(!c){if(c=!0,i.transitionEndEvent){i.transitionEndEvent.split(/\\s+/).forEach(function(e){n.i(s.i)(o,e,t)})}i._animationTimeout=null,n.i(s.c)(a,r.dirClass),n.i(s.c)(a,r.overlayClass),n.i(s.b)(a,\"active\"),n.i(s.c)(o,\"active\"),n.i(s.c)(o,r.dirClass),n.i(s.c)(o,r.overlayClass),n.i(s.g)(o,\"aria-current\",\"false\"),n.i(s.g)(a,\"aria-current\",\"true\"),n.i(s.g)(o,\"aria-hidden\",\"true\"),n.i(s.g)(a,\"aria-hidden\",\"false\"),o.tabIndex=-1,a.tabIndex=-1,i.isCycling||(a.tabIndex=0,i.$nextTick(function(){a.focus()})),i.isSliding=!1,i.$nextTick(function(){return i.$emit(\"sliding-end\",e)})}};if(this.transitionEndEvent){this.transitionEndEvent.split(/\\s+/).forEach(function(e){n.i(s.h)(o,e,u)})}this._animationTimeout=setTimeout(u,650)}}}},created:function(){this._animationTimeout=null},mounted:function(){this.transitionEndEvent=i(this.$el)||null,this.updateSlides(),n.i(r.a)(this.$refs.inner,this.updateSlides.bind(this),{subtree:!1,childList:!0,attributes:!0,attributeFilter:[\"id\"]})},beforeDestroy:function(){clearInterval(this.intervalId),clearTimeout(this._animationTimeout),this.intervalId=null,this._animationTimeout=null}}},mK26:function(e,t,n){e.exports=n(\"jTvC\")},mfOX:function(e,t,n){\"use strict\";function i(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(\"\"),this.setValue(null)),this._debouncedOnChangeValue=a.debounce(this._onChangeValue.bind(this),i.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=a.debounce(this._onChangeField.bind(this),i.prototype.DEBOUNCE_INTERVAL)}var r=n(\"eTOm\"),o=n(\"pk12\"),s=n(\"il5r\"),a=n(\"QmdE\"),l=n(\"+LpG\").translate;i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field=\"tree\"===this.editor.options.mode,this.editable.value=\"view\"!==this.editor.options.mode,(\"tree\"===this.editor.options.mode||\"form\"===this.editor.options.mode)&&\"function\"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getPath()});\"boolean\"==typeof e?(this.editable.field=e,this.editable.value=e):(\"boolean\"==typeof e.field&&(this.editable.field=e.field),\"boolean\"==typeof e.value&&(this.editable.value=e.value))}},i.prototype.getPath=function(){for(var e=this,t=[];e;){var n=e.parent?\"array\"!=e.parent.type?e.field:e.index:void 0;void 0!==n&&t.unshift(n),e=e.parent}return t},i.prototype.findNode=function(e){for(var t=a.parsePath(e),n=this;n&&t.length>0;){var i=t.shift();if(\"number\"==typeof i){if(\"array\"!==n.type)throw new Error(\"Cannot get child node at index \"+i+\": node is no array\");n=n.childs[i]}else{if(\"object\"!==n.type)throw new Error(\"Cannot get child node \"+i+\": node is no object\");n=n.childs.filter(function(e){return e.field===i})[0]}}return n},i.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},i.prototype.setError=function(e,t){this.getDom(),this.error=e;var n=this.dom.tdError;if(e){n||(n=document.createElement(\"td\"),this.dom.tdError=n,this.dom.tdValue.parentNode.appendChild(n));var i=document.createElement(\"div\");i.className=\"jsoneditor-popover jsoneditor-right\",i.appendChild(document.createTextNode(e.message));var r=document.createElement(\"button\");for(r.type=\"button\",r.className=\"jsoneditor-schema-error\",r.appendChild(i),r.onmouseover=r.onfocus=function(){for(var e=[\"right\",\"above\",\"below\",\"left\"],t=0;t<e.length;t++){var n=e[t];i.className=\"jsoneditor-popover jsoneditor-\"+n;var r=this.editor.content.getBoundingClientRect(),o=i.getBoundingClientRect();if(a.insideRect(r,o,20))break}}.bind(this),t&&(r.onclick=function(){t.findParents().forEach(function(e){e.expand(!1)}),t.scrollTo(function(){t.focus()})});n.firstChild;)n.removeChild(n.firstChild);n.appendChild(r)}else n&&(this.dom.tdError.parentNode.removeChild(this.dom.tdError),delete this.dom.tdError)},i.prototype.getIndex=function(){return this.parent?this.parent.childs.indexOf(this):-1},i.prototype.setParent=function(e){this.parent=e},i.prototype.setField=function(e,t){this.field=e,this.previousField=e,this.fieldEditable=!0===t},i.prototype.getField=function(){return void 0===this.field&&this._getDomField(),this.field},i.prototype.setValue=function(e,t){var n,r,o=this.childs;if(o)for(;o.length;)this.removeChild(o[0]);if(this.type=this._getType(e),t&&t!=this.type){if(\"string\"!=t||\"auto\"!=this.type)throw new Error('Type mismatch: cannot cast value of type \"'+this.type+' to the specified type \"'+t+'\"');this.type=t}if(\"array\"==this.type){this.childs=[];for(var s=0,a=e.length;s<a;s++)void 0===(n=e[s])||n instanceof Function||(r=new i(this.editor,{value:n}),this.appendChild(r));this.value=\"\"}else if(\"object\"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(void 0===(n=e[l])||n instanceof Function||(r=new i(this.editor,{field:l,value:n}),this.appendChild(r)));this.value=\"\",!0===this.editor.options.sortObjectKeys&&this.sort(\"asc\")}else this.childs=void 0,this.value=e;this.previousValue=this.value},i.prototype.getValue=function(){if(\"array\"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if(\"object\"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},i.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},i.prototype.getNodePath=function(){var e=this.parent?this.parent.getNodePath():[];return e.push(this),e},i.prototype.clone=function(){var e=new i(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(n){var i=n.clone();i.setParent(e),t.push(i)}),e.childs=t}else e.childs=void 0;return e},i.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className=\"jsoneditor-expanded\"),this.showChilds(),!1!==e&&this.childs.forEach(function(t){t.expand(e)}))},i.prototype.collapse=function(e){this.childs&&(this.hideChilds(),!1!==e&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className=\"jsoneditor-collapsed\"),this.expanded=!1)},i.prototype.showChilds=function(){if(this.childs&&this.expanded){var e=this.dom.tr,t=e?e.parentNode:void 0;if(t){var n=this.getAppend(),i=e.nextSibling;i?t.insertBefore(n,i):t.appendChild(n),this.childs.forEach(function(e){t.insertBefore(e.getDom(),n),e.showChilds()})}}},i.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},i.prototype.hideChilds=function(){if(this.childs&&this.expanded){var e=this.getAppend();e.parentNode&&e.parentNode.removeChild(e),this.childs.forEach(function(e){e.hide()})}},i.prototype.expandTo=function(){for(var e=this.parent;e;)e.expanded||e.expand(),e=e.parent},i.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable=\"object\"==this.type,\"array\"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),n=this.getAppend(),i=n?n.parentNode:void 0;n&&i&&i.insertBefore(t,n),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.moveBefore=function(e,t){if(this._hasChilds()){var n=this.dom.tr?this.dom.tr.parentNode:void 0;if(n){var i=document.createElement(\"tr\");i.style.height=n.clientHeight+\"px\",n.appendChild(i)}e.parent&&e.parent.removeChild(e),t instanceof c?this.appendChild(e):this.insertBefore(e,t),n&&n.removeChild(i)}},i.prototype.moveTo=function(e,t){if(e.parent==this){this.childs.indexOf(e)<t&&t++}var n=this.childs[t]||this.append;this.moveBefore(e,n)},i.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable=\"object\"==this.type,this.childs.push(e);else{var n=this.childs.indexOf(t);if(-1==n)throw new Error(\"Node not found\");e.setParent(this),e.fieldEditable=\"object\"==this.type,this.childs.splice(n,0,e)}if(this.expanded){var i=e.getDom(),r=t.getDom(),o=r?r.parentNode:void 0;r&&o&&o.insertBefore(i,r),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.insertAfter=function(e,t){if(this._hasChilds()){var n=this.childs.indexOf(t),i=this.childs[n+1];i?this.insertBefore(e,i):this.appendChild(e)}},i.prototype.search=function(e){var t,n=[],i=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){t=String(this.field).toLowerCase().indexOf(i),-1!=t&&(this.searchField=!0,n.push({node:this,elem:\"field\"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var r=[];this.childs.forEach(function(t){r=r.concat(t.search(e))}),n=n.concat(r)}if(void 0!=i){0==r.length?this.collapse(!1):this.expand(!1)}}else{if(void 0!=this.value){t=String(this.value).toLowerCase().indexOf(i),-1!=t&&(this.searchValue=!0,n.push({node:this,elem:\"value\"}))}this._updateDomValue()}return n},i.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent;t;)t.expand(!1),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},i.focusElement=void 0,i.prototype.focus=function(e){if(i.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case\"drag\":t.drag?t.drag.focus():t.menu.focus();break;case\"menu\":t.menu.focus();break;case\"expand\":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.menu.focus();break;case\"field\":t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case\"value\":default:t.select?t.select.focus():t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},i.select=function(e){setTimeout(function(){a.selectContentEditable(e)},0)},i.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},i.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var n=0,i=t.length;n<i;n++)if(t[n].containsNode(e))return!0;return!1},i.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error(l(\"validationCannotMove\"));e.parent&&e.parent.removeChild(e);var n=e.clone();e.clearDom(),t?this.insertBefore(n,t):this.appendChild(n)}},i.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var n=this.childs.splice(t,1)[0];return n.parent=null,this.updateDom({updateIndexes:!0}),n}}},i.prototype._remove=function(e){this.removeChild(e)},i.prototype.changeType=function(e){var t=this.type;if(t!=e){if(\"string\"!=e&&\"auto\"!=e||\"string\"!=t&&\"auto\"!=t){var n,i=this.dom.tr?this.dom.tr.parentNode:void 0;n=this.expanded?this.getAppend():this.getDom();var r=n&&n.parentNode?n.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,\"object\"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field=\"\")}),\"string\"!=t&&\"auto\"!=t||(this.expanded=!0)):\"array\"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),\"string\"!=t&&\"auto\"!=t||(this.expanded=!0)):this.expanded=!1,i&&(r?i.insertBefore(this.getDom(),r):i.appendChild(this.getDom())),this.showChilds()}else this.type=e;\"auto\"!=e&&\"string\"!=e||(this.value=\"string\"==e?String(this.value):this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},i.prototype._getDomValue=function(e){if(this.dom.value&&\"array\"!=this.type&&\"object\"!=this.type&&(this.valueInnerText=a.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if(\"string\"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var n=this._unescapeHTML(this.valueInnerText);t=this._stringCast(n)}t!==this.value&&(this.value=t,this._debouncedOnChangeValue())}catch(t){if(this.value=void 0,!0!==e)throw t}},i.prototype._onChangeValue=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(String(this.value),String(this.previousValue));e.range.startOffset=t.start,e.range.endOffset=t.end}var n=this.editor.getSelection();if(n.range){var i=a.textDiff(String(this.previousValue),String(this.value));n.range.startOffset=i.start,n.range.endOffset=i.end}this.editor._onAction(\"editValue\",{node:this,oldValue:this.previousValue,newValue:this.value,oldSelection:e,newSelection:n}),this.previousValue=this.value},i.prototype._onChangeField=function(){var e=this.editor.getSelection(),t=this.previousField||\"\";if(e.range){var n=a.textDiff(this.field,t);e.range.startOffset=n.start,e.range.endOffset=n.end}var i=this.editor.getSelection();if(i.range){var r=a.textDiff(t,this.field);i.range.startOffset=r.start,i.range.endOffset=r.end}this.editor._onAction(\"editField\",{node:this,oldValue:this.previousField,newValue:this.field,oldSelection:e,newSelection:i}),this.previousField=this.field},i.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=[\"jsoneditor-value\"],n=this.value,i=\"auto\"==this.type?a.type(n):this.type,r=\"string\"==i&&a.isUrl(n);t.push(\"jsoneditor-\"+i),r&&t.push(\"jsoneditor-url\");if(\"\"==String(this.value)&&\"array\"!=this.type&&\"object\"!=this.type&&t.push(\"jsoneditor-empty\"),this.searchValueActive&&t.push(\"jsoneditor-highlight-active\"),this.searchValue&&t.push(\"jsoneditor-highlight\"),e.className=t.join(\" \"),\"array\"==i||\"object\"==i){var o=this.childs?this.childs.length:0;e.title=this.type+\" containing \"+o+\" items\"}else r&&this.editable.value?e.title=l(\"openUrl\"):e.title=\"\";if(\"boolean\"===i&&this.editable.value?(this.dom.checkbox||(this.dom.checkbox=document.createElement(\"input\"),this.dom.checkbox.type=\"checkbox\",this.dom.tdCheckbox=document.createElement(\"td\"),this.dom.tdCheckbox.className=\"jsoneditor-tree\",this.dom.tdCheckbox.appendChild(this.dom.checkbox),this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox,this.dom.tdValue)),this.dom.checkbox.checked=this.value):this.dom.tdCheckbox&&(this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox),delete this.dom.tdCheckbox,delete this.dom.checkbox),this.enum&&this.editable.value){if(!this.dom.select){this.dom.select=document.createElement(\"select\"),this.id=this.field+\"_\"+(new Date).getUTCMilliseconds(),this.dom.select.id=this.id,this.dom.select.name=this.dom.select.id,this.dom.select.option=document.createElement(\"option\"),this.dom.select.option.value=\"\",this.dom.select.option.innerHTML=\"--\",this.dom.select.appendChild(this.dom.select.option);for(var s=0;s<this.enum.length;s++)this.dom.select.option=document.createElement(\"option\"),this.dom.select.option.value=this.enum[s],this.dom.select.option.innerHTML=this.enum[s],this.dom.select.option.value==this.value&&(this.dom.select.option.selected=!0),this.dom.select.appendChild(this.dom.select.option);this.dom.tdSelect=document.createElement(\"td\"),this.dom.tdSelect.className=\"jsoneditor-tree\",this.dom.tdSelect.appendChild(this.dom.select),this.dom.tdValue.parentNode.insertBefore(this.dom.tdSelect,this.dom.tdValue)}!this.schema||this.schema.hasOwnProperty(\"oneOf\")||this.schema.hasOwnProperty(\"anyOf\")||this.schema.hasOwnProperty(\"allOf\")?delete this.valueFieldHTML:(this.valueFieldHTML=this.dom.tdValue.innerHTML,this.dom.tdValue.style.visibility=\"hidden\",this.dom.tdValue.innerHTML=\"\")}else this.dom.tdSelect&&(this.dom.tdSelect.parentNode.removeChild(this.dom.tdSelect),delete this.dom.tdSelect,delete this.dom.select,this.dom.tdValue.innerHTML=this.valueFieldHTML,this.dom.tdValue.style.visibility=\"\",delete this.valueFieldHTML);a.stripFormatting(e)}},i.prototype._updateDomField=function(){var e=this.dom.field;if(e){\"\"==String(this.field)&&\"array\"!=this.parent.type?a.addClassName(e,\"jsoneditor-empty\"):a.removeClassName(e,\"jsoneditor-empty\"),this.searchFieldActive?a.addClassName(e,\"jsoneditor-highlight-active\"):a.removeClassName(e,\"jsoneditor-highlight-active\"),this.searchField?a.addClassName(e,\"jsoneditor-highlight\"):a.removeClassName(e,\"jsoneditor-highlight\"),a.stripFormatting(e)}},i.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=a.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);t!==this.field&&(this.field=t,this._debouncedOnChangeField())}catch(t){if(this.field=void 0,!0!==e)throw t}},i.prototype.validate=function(){var e=[];if(\"object\"===this.type){for(var t={},n=[],i=0;i<this.childs.length;i++){var r=this.childs[i];t.hasOwnProperty(r.field)&&n.push(r.field),t[r.field]=!0}n.length>0&&(e=this.childs.filter(function(e){return-1!==n.indexOf(e.field)}).map(function(e){return{node:e,error:{message:l(\"duplicateKey\")+' \"'+e.field+'\"'}}}))}if(this.childs)for(var i=0;i<this.childs.length;i++){var o=this.childs[i].validate();o.length>0&&(e=e.concat(o))}return e},i.prototype.clearDom=function(){this.dom={}},i.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement(\"tr\"),e.tr.node=this,\"tree\"===this.editor.options.mode){var t=document.createElement(\"td\");if(this.editable.field&&this.parent){var n=document.createElement(\"button\");n.type=\"button\",e.drag=n,n.className=\"jsoneditor-dragarea\",n.title=l(\"drag\"),t.appendChild(n)}e.tr.appendChild(t);var i=document.createElement(\"td\"),r=document.createElement(\"button\");r.type=\"button\",e.menu=r,r.className=\"jsoneditor-contextmenu\",r.title=l(\"actionsMenu\"),i.appendChild(e.menu),e.tr.appendChild(i)}var o=document.createElement(\"td\");return e.tr.appendChild(o),e.tree=this._createDomTree(),o.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},i.onDragStart=function(e,t){if(!Array.isArray(e))return i.onDragStart([e],t);if(0!==e.length){var n=e[0],r=e[e.length-1],o=i.getNodeFromTarget(t.target),s=r._nextSibling(),l=n.editor,c=a.getAbsoluteTop(o.dom.tr)-a.getAbsoluteTop(n.dom.tr);l.mousemove||(l.mousemove=a.addEventListener(window,\"mousemove\",function(t){i.onDrag(e,t)})),l.mouseup||(l.mouseup=a.addEventListener(window,\"mouseup\",function(t){i.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:s,mouseX:t.pageX,offsetY:c,level:n.getLevel()},document.body.style.cursor=\"move\",t.preventDefault()}},i.onDrag=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n,r,o,s,l,u,h,d,f,p,m,g,v,y,b=e[0].editor,w=t.pageY-b.drag.offsetY,C=t.pageX,A=!1,E=e[0];if(n=E.dom.tr,f=a.getAbsoluteTop(n),g=n.offsetHeight,w<f){r=n;do{r=r.previousSibling,h=i.getNodeFromTarget(r),p=r?a.getAbsoluteTop(r):0}while(r&&w<p);h&&!h.parent&&(h=void 0),h||(u=n.parentNode.firstChild,r=u?u.nextSibling:void 0,(h=i.getNodeFromTarget(r))==E&&(h=void 0)),h&&(r=h.dom.tr,p=r?a.getAbsoluteTop(r):0,w>p+g&&(h=void 0)),h&&(e.forEach(function(e){h.parent.moveBefore(e,h)}),A=!0)}else{var x=e[e.length-1];if(l=x.expanded&&x.append?x.append.getDom():x.dom.tr,s=l?l.nextSibling:void 0){m=a.getAbsoluteTop(s),o=s;do{d=i.getNodeFromTarget(o),o&&(v=o.nextSibling?a.getAbsoluteTop(o.nextSibling):0,y=o?v-m:0,d.parent.childs.length==e.length&&d.parent.childs[e.length-1]==x&&(f+=27)),o=o.nextSibling}while(o&&w>f+y);if(d&&d.parent){var F=C-b.drag.mouseX,S=Math.round(F/24/2),$=b.drag.level+S,k=d.getLevel();for(r=d.dom.tr.previousSibling;k<$&&r;){h=i.getNodeFromTarget(r);if(e.some(function(e){return e===h||h._isChildOf(e)}));else{if(!(h instanceof c))break;var _=h.parent.childs;if(_.length==e.length&&_[e.length-1]==x)break;d=i.getNodeFromTarget(r),k=d.getLevel()}r=r.previousSibling}l.nextSibling!=d.dom.tr&&(e.forEach(function(e){d.parent.moveBefore(e,d)}),A=!0)}}}A&&(b.drag.mouseX=C,b.drag.level=E.getLevel()),b.startAutoScroll(w),t.preventDefault()}},i.onDragEnd=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n=e[0],r=n.editor,o=n.parent,s=o.childs.indexOf(n),l=o.childs[s+e.length]||o.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:r.drag.oldSelection,newSelection:r.getSelection(),oldBeforeNode:r.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&r._onAction(\"moveNodes\",c),document.body.style.cursor=r.drag.oldCursor,r.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&r.highlighter.unhighlight()}),delete r.drag,r.mousemove&&(a.removeEventListener(window,\"mousemove\",r.mousemove),delete r.mousemove),r.mouseup&&(a.removeEventListener(window,\"mouseup\",r.mouseup),delete r.mouseup),r.stopAutoScroll(),t.preventDefault()}},i.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},i.prototype._createDomField=function(){return document.createElement(\"div\")},i.prototype.setHighlight=function(e){this.dom.tr&&(e?a.addClassName(this.dom.tr,\"jsoneditor-highlight\"):a.removeClassName(this.dom.tr,\"jsoneditor-highlight\"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},i.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?a.addClassName(this.dom.tr,\"jsoneditor-selected\"):a.removeClassName(this.dom.tr,\"jsoneditor-selected\"),t?a.addClassName(this.dom.tr,\"jsoneditor-first\"):a.removeClassName(this.dom.tr,\"jsoneditor-first\"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},i.prototype.updateValue=function(e){this.value=e,this.updateDom()},i.prototype.updateField=function(e){this.field=e,this.updateDom()},i.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+\"px\");var n=this.dom.field;if(n){this.fieldEditable?(n.contentEditable=this.editable.field,n.spellcheck=!1,n.className=\"jsoneditor-field\"):n.className=\"jsoneditor-readonly\";var i;i=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:\"\",n.innerHTML=this._escapeHTML(i),this._updateSchema()}var r=this.dom.value;if(r){var o=this.childs?this.childs.length:0;\"array\"==this.type?(r.innerHTML=\"[\"+o+\"]\",a.addClassName(this.dom.tr,\"jsoneditor-expandable\")):\"object\"==this.type?(r.innerHTML=\"{\"+o+\"}\",a.addClassName(this.dom.tr,\"jsoneditor-expandable\")):(r.innerHTML=this._escapeHTML(this.value),a.removeClassName(this.dom.tr,\"jsoneditor-expandable\"))}this._updateDomField(),this._updateDomValue(),e&&!0===e.updateIndexes&&this._updateDomIndexes(),e&&!0===e.recurse&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},i.prototype._updateSchema=function(){this.editor&&this.editor.options&&(this.schema=this.editor.options.schema?i._findSchema(this.editor.options.schema,this.getPath()):null,this.schema?this.enum=i._findEnum(this.schema):delete this.enum)},i._findEnum=function(e){if(e.enum)return e.enum;var t=e.oneOf||e.anyOf||e.allOf;if(t){var n=t.filter(function(e){return e.enum});if(n.length>0)return n[0].enum}return null},i._findSchema=function(e,t){var n=e,r=n,o=e.oneOf||e.anyOf||e.allOf;o||(o=[e]);for(var s=0;s<o.length;s++){n=o[s];for(var a=0;a<t.length&&n;a++){var l=t[a];if(\"string\"==typeof l&&n.patternProperties&&a==t.length-1)for(var c in n.patternProperties)r=i._findSchema(n.patternProperties[c],t.slice(a,t.length));else n.items&&n.items.properties?(n=n.items.properties[l])&&(r=i._findSchema(n,t.slice(a,t.length))):\"string\"==typeof l&&n.properties?(n=n.properties[l]||null)&&(r=i._findSchema(n,t.slice(a,t.length))):\"number\"==typeof l&&n.items&&(n=n.items)&&(r=i._findSchema(n,t.slice(a,t.length)))}}return r},i.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&(\"array\"==this.type?t.forEach(function(e,t){e.index=t;var n=e.dom.field;n&&(n.innerHTML=t)}):\"object\"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=\"\"))}))},i.prototype._createDomValue=function(){var e;return\"array\"==this.type?(e=document.createElement(\"div\"),e.innerHTML=\"[...]\"):\"object\"==this.type?(e=document.createElement(\"div\"),e.innerHTML=\"{...}\"):!this.editable.value&&a.isUrl(this.value)?(e=document.createElement(\"a\"),e.href=this.value,e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement(\"div\"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.innerHTML=this._escapeHTML(this.value)),e},i.prototype._createDomExpandButton=function(){var e=document.createElement(\"button\");return e.type=\"button\",this._hasChilds()?(e.className=this.expanded?\"jsoneditor-expanded\":\"jsoneditor-collapsed\",e.title=l(\"expandTitle\")):(e.className=\"jsoneditor-invisible\",e.title=\"\"),e},i.prototype._createDomTree=function(){var e=this.dom,t=document.createElement(\"table\"),n=document.createElement(\"tbody\");t.style.borderCollapse=\"collapse\",t.className=\"jsoneditor-values\",t.appendChild(n);var i=document.createElement(\"tr\");n.appendChild(i);var r=document.createElement(\"td\");r.className=\"jsoneditor-tree\",i.appendChild(r),e.expand=this._createDomExpandButton(),r.appendChild(e.expand),e.tdExpand=r;var o=document.createElement(\"td\");o.className=\"jsoneditor-tree\",i.appendChild(o),e.field=this._createDomField(),o.appendChild(e.field),e.tdField=o;var s=document.createElement(\"td\");s.className=\"jsoneditor-tree\",i.appendChild(s),\"object\"!=this.type&&\"array\"!=this.type&&(s.appendChild(document.createTextNode(\":\")),s.className=\"jsoneditor-separator\"),e.tdSeparator=s;var a=document.createElement(\"td\");return a.className=\"jsoneditor-tree\",i.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},i.prototype.onEvent=function(e){var t=e.type,n=e.target||e.srcElement,i=this.dom,r=this,o=this._hasChilds();if(n!=i.drag&&n!=i.menu||(\"mouseover\"==t?this.editor.highlighter.highlight(this):\"mouseout\"==t&&this.editor.highlighter.unhighlight()),\"click\"==t&&n==i.menu){var s=r.editor.highlighter;s.highlight(r),s.lock(),a.addClassName(i.menu,\"jsoneditor-selected\"),this.showContextMenu(i.menu,function(){a.removeClassName(i.menu,\"jsoneditor-selected\"),s.unlock(),s.unhighlight()})}if(\"click\"==t&&(n==i.expand||(\"view\"===r.editor.options.mode||\"form\"===r.editor.options.mode)&&\"DIV\"===n.nodeName)&&o){var l=e.ctrlKey;this._onExpand(l)}\"change\"==t&&n==i.checkbox&&(this.dom.value.innerHTML=!this.value,this._getDomValue()),\"change\"==t&&n==i.select&&(this.dom.value.innerHTML=i.select.value,this._getDomValue(),this._updateDomValue());var c=i.value;if(n==c)switch(t){case\"blur\":case\"change\":this._getDomValue(!0),this._updateDomValue(),this.value&&(c.innerHTML=this._escapeHTML(this.value));break;case\"input\":this._getDomValue(!0),this._updateDomValue();break;case\"keydown\":case\"mousedown\":this.editor.selection=this.editor.getSelection();break;case\"click\":e.ctrlKey&&this.editable.value&&a.isUrl(this.value)&&(e.preventDefault(),window.open(this.value,\"_blank\"));break;case\"keyup\":this._getDomValue(!0),this._updateDomValue();break;case\"cut\":case\"paste\":setTimeout(function(){r._getDomValue(!0),r._updateDomValue()},1)}var u=i.field;if(n==u)switch(t){case\"blur\":case\"change\":this._getDomField(!0),this._updateDomField(),this.field&&(u.innerHTML=this._escapeHTML(this.field));break;case\"input\":this._getDomField(!0),this._updateSchema(),this._updateDomField(),this._updateDomValue();break;case\"keydown\":case\"mousedown\":this.editor.selection=this.editor.getSelection();break;case\"keyup\":this._getDomField(!0),this._updateDomField();break;case\"cut\":case\"paste\":setTimeout(function(){r._getDomField(!0),r._updateDomField()},1)}n!=i.tree.parentNode||\"click\"!=t||e.hasMoved||((void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageX<a.getAbsoluteLeft(i.tdSeparator))||o?u&&(a.setEndOfContentEditable(u),u.focus()):c&&!this.enum&&(a.setEndOfContentEditable(c),c.focus()));(n!=i.tdExpand||o)&&n!=i.tdField&&n!=i.tdSeparator||\"click\"!=t||e.hasMoved||u&&(a.setEndOfContentEditable(u),u.focus()),\"keydown\"==t&&this.onKeyDown(e)},i.prototype.onKeyDown=function(e){var t,n,r,o,s,l,u,h,d=e.which||e.keyCode,f=e.target||e.srcElement,p=e.ctrlKey,m=e.shiftKey,g=e.altKey,v=!1,y=\"tree\"===this.editor.options.mode,b=this.editor.multiselection.nodes.length>0?this.editor.multiselection.nodes:[this],w=b[0],C=b[b.length-1];if(13==d){if(f==this.dom.value)this.editable.value&&!e.ctrlKey||a.isUrl(this.value)&&(window.open(this.value,\"_blank\"),v=!0);else if(f==this.dom.expand){var A=this._hasChilds();if(A){var E=e.ctrlKey;this._onExpand(E),f.focus(),v=!0}}}else if(68==d)p&&y&&(i.onDuplicate(b),v=!0);else if(69==d)p&&(this._onExpand(m),f.focus(),v=!0);else if(77==d&&y)p&&(this.showContextMenu(f),v=!0);else if(46==d&&y)p&&(i.onRemove(b),v=!0);else if(45==d&&y)p&&!m?(this._onInsertBefore(),v=!0):p&&m&&(this._onInsertAfter(),v=!0);else if(35==d){if(g){var x=this._lastNode();x&&x.focus(i.focusElement||this._getElementName(f)),v=!0}}else if(36==d){if(g){var F=this._firstNode();F&&F.focus(i.focusElement||this._getElementName(f)),v=!0}}else if(37==d){if(g&&!m){var S=this._previousElement(f);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&y){if(C.expanded){var $=C.getAppend();r=$?$.nextSibling:void 0}else{var k=C.getDom();r=k.nextSibling}r&&(n=i.getNodeFromTarget(r),o=r.nextSibling,D=i.getNodeFromTarget(o),n&&n instanceof c&&1!=C.parent.childs.length&&D&&D.parent&&(s=this.editor.getSelection(),l=C._nextSibling(),b.forEach(function(e){D.parent.moveBefore(e,D)}),this.focus(i.focusElement||this._getElementName(f)),this.editor._onAction(\"moveNodes\",{nodes:b,oldBeforeNode:l,newBeforeNode:D,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(38==d)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(i.focusElement||this._getElementName(f))),v=!0):!g&&p&&m&&y?(t=this._previousNode(),t&&(h=this.editor.multiselection,h.start=h.start||this,h.end=t,u=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(u),t.focus(\"field\")),v=!0):g&&m&&y&&(t=w._previousNode(),t&&t.parent&&(s=this.editor.getSelection(),l=C._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(f)),this.editor._onAction(\"moveNodes\",{nodes:b,oldBeforeNode:l,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0);else if(39==d){if(g&&!m){var _=this._nextElement(f);_&&this.focus(this._getElementName(_)),v=!0}else if(g&&m&&y){k=w.getDom();var B=k.previousSibling;B&&(t=i.getNodeFromTarget(B))&&t.parent&&t instanceof c&&!t.isVisible()&&(s=this.editor.getSelection(),l=C._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(f)),this.editor._onAction(\"moveNodes\",{nodes:b,oldBeforeNode:l,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()}))}}else if(40==d)if(g&&!m)n=this._nextNode(),n&&(this.editor.deselect(!0),n.focus(i.focusElement||this._getElementName(f))),v=!0;else if(!g&&p&&m&&y)n=this._nextNode(),n&&(h=this.editor.multiselection,h.start=h.start||this,h.end=n,u=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(u),n.focus(\"field\")),v=!0;else if(g&&m&&y){n=C.expanded?C.append?C.append._nextNode():void 0:C._nextNode();var D=n&&(n._nextNode()||n.parent.append);D&&D.parent&&(s=this.editor.getSelection(),l=C._nextSibling(),b.forEach(function(e){D.parent.moveBefore(e,D)}),this.focus(i.focusElement||this._getElementName(f)),this.editor._onAction(\"moveNodes\",{nodes:b,oldBeforeNode:l,newBeforeNode:D,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},i.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,n=t.parentNode,i=n.scrollTop;n.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(n.appendChild(t),n.scrollTop=i)},i.onRemove=function(e){if(!Array.isArray(e))return i.onRemove([e]);if(e&&e.length>0){var t=e[0],n=t.parent,r=t.editor,o=t.getIndex();r.highlighter.unhighlight();var s=r.getSelection();i.blurNodes(e);var a=r.getSelection();e.forEach(function(e){e.parent._remove(e)}),r._onAction(\"removeNodes\",{nodes:e.slice(0),parent:n,index:o,oldSelection:s,newSelection:a})}},i.onDuplicate=function(e){if(!Array.isArray(e))return i.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],n=t.parent,r=t.editor;r.deselect(r.multiselection.nodes);var o=r.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return n.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():r.select(a);var l=r.getSelection();r._onAction(\"duplicateNodes\",{afterNode:t,nodes:a,parent:n,oldSelection:o,newSelection:l})}},i.prototype._onInsertBefore=function(e,t,n){var r=this.editor.getSelection(),o=new i(this.editor,{field:void 0!=e?e:\"\",value:void 0!=t?t:\"\",type:n});o.expand(!0),this.parent.insertBefore(o,this),this.editor.highlighter.unhighlight(),o.focus(\"field\");var s=this.editor.getSelection();this.editor._onAction(\"insertBeforeNodes\",{nodes:[o],beforeNode:this,parent:this.parent,oldSelection:r,newSelection:s})},i.prototype._onInsertAfter=function(e,t,n){var r=this.editor.getSelection(),o=new i(this.editor,{field:void 0!=e?e:\"\",value:void 0!=t?t:\"\",type:n});o.expand(!0),this.parent.insertAfter(o,this),this.editor.highlighter.unhighlight(),o.focus(\"field\");var s=this.editor.getSelection();this.editor._onAction(\"insertAfterNodes\",{nodes:[o],afterNode:this,parent:this.parent,oldSelection:r,newSelection:s})},i.prototype._onAppend=function(e,t,n){var r=this.editor.getSelection(),o=new i(this.editor,{field:void 0!=e?e:\"\",value:void 0!=t?t:\"\",type:n});o.expand(!0),this.parent.appendChild(o),this.editor.highlighter.unhighlight(),o.focus(\"field\");var s=this.editor.getSelection();this.editor._onAction(\"appendNodes\",{nodes:[o],parent:this.parent,oldSelection:r,newSelection:s})},i.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var n=this.editor.getSelection();this.changeType(e);var i=this.editor.getSelection();this.editor._onAction(\"changeType\",{node:this,oldType:t,newType:e,oldSelection:n,newSelection:i})}},i.prototype.sort=function(e){if(this._hasChilds()){var t=\"desc\"==e?-1:1,n=\"array\"==this.type?\"value\":\"field\";this.hideChilds();var i=this.childs,o=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort(function(e,i){return t*r(e[n],i[n])}),this.sortOrder=1==t?\"asc\":\"desc\",this.editor._onAction(\"sort\",{node:this,oldChilds:i,oldSort:o,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},i.prototype.getAppend=function(){return this.append||(this.append=new c(this.editor),this.append.setParent(this)),this.append.getDom()},i.getNodeFromTarget=function(e){for(;e;){if(e.node)return e.node;e=e.parentNode}},i.blurNodes=function(e){if(!Array.isArray(e))return void i.blurNodes([e]);var t=e[0],n=t.parent,r=t.getIndex();n.childs[r+e.length]?n.childs[r+e.length].focus():n.childs[r-1]?n.childs[r-1].focus():n.focus()},i.prototype._nextSibling=function(){var e=this.parent.childs.indexOf(this);return this.parent.childs[e+1]||this.parent.append},i.prototype._previousNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t;do{n=n.previousSibling,e=i.getNodeFromTarget(n)}while(n&&e instanceof c&&!e.isVisible())}return e},i.prototype._nextNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t;do{n=n.nextSibling,e=i.getNodeFromTarget(n)}while(n&&e instanceof c&&!e.isVisible())}return e},i.prototype._firstNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t.parentNode.firstChild;e=i.getNodeFromTarget(n)}return e},i.prototype._lastNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t.parentNode.lastChild;for(e=i.getNodeFromTarget(n);n&&e instanceof c&&!e.isVisible();)n=n.previousSibling,e=i.getNodeFromTarget(n)}return e},i.prototype._previousElement=function(e){var t=this.dom;switch(e){case t.value:if(this.fieldEditable)return t.field;case t.field:if(this._hasChilds())return t.expand;case t.expand:return t.menu;case t.menu:if(t.drag)return t.drag;default:return null}},i.prototype._nextElement=function(e){var t=this.dom;switch(e){case t.drag:return t.menu;case t.menu:if(this._hasChilds())return t.expand;case t.expand:if(this.fieldEditable)return t.field;case t.field:if(!this._hasChilds())return t.value;default:return null}},i.prototype._getElementName=function(e){var t=this.dom;for(var n in t)if(t.hasOwnProperty(n)&&t[n]==e)return n;return null},i.prototype._hasChilds=function(){return\"array\"==this.type||\"object\"==this.type},i.TYPE_TITLES={auto:l(\"autoType\"),object:l(\"objectType\"),array:l(\"arrayType\"),string:l(\"stringType\")},i.prototype.addTemplates=function(e,t){var n=this,i=n.editor.options.templates;if(null!=i){i.length&&e.push({type:\"separator\"});var r=function(e,t){n._onAppend(e,t)},o=function(e,t){n._onInsertBefore(e,t)};i.forEach(function(n){e.push({text:n.text,className:n.className||\"jsoneditor-type-object\",title:n.title,click:t?r.bind(this,n.field,n.value):o.bind(this,n.field,n.value)})})}},i.prototype.showContextMenu=function(e,t){var n=this,r=i.TYPE_TITLES,s=[];if(this.editable.value&&s.push({text:l(\"type\"),title:l(\"typeTitle\"),className:\"jsoneditor-type-\"+this.type,submenu:[{text:l(\"auto\"),className:\"jsoneditor-type-auto\"+(\"auto\"==this.type?\" jsoneditor-selected\":\"\"),title:r.auto,click:function(){n._onChangeType(\"auto\")}},{text:l(\"array\"),className:\"jsoneditor-type-array\"+(\"array\"==this.type?\" jsoneditor-selected\":\"\"),title:r.array,click:function(){n._onChangeType(\"array\")}},{text:l(\"object\"),className:\"jsoneditor-type-object\"+(\"object\"==this.type?\" jsoneditor-selected\":\"\"),title:r.object,click:function(){n._onChangeType(\"object\")}},{text:l(\"string\"),className:\"jsoneditor-type-string\"+(\"string\"==this.type?\" jsoneditor-selected\":\"\"),title:r.string,click:function(){n._onChangeType(\"string\")}}]}),this._hasChilds()){var a=\"asc\"==this.sortOrder?\"desc\":\"asc\";s.push({text:l(\"sort\"),title:l(\"sortTitle\")+this.type,className:\"jsoneditor-sort-\"+a,click:function(){n.sort(a)},submenu:[{text:l(\"ascending\"),className:\"jsoneditor-sort-asc\",title:l(\"ascendingTitle\",{type:this.type}),click:function(){n.sort(\"asc\")}},{text:l(\"descending\"),className:\"jsoneditor-sort-desc\",title:l(\"descendingTitle\",{type:this.type}),click:function(){n.sort(\"desc\")}}]})}if(this.parent&&this.parent._hasChilds()){s.length&&s.push({type:\"separator\"});var c=n.parent.childs;if(n==c[c.length-1]){var u=[{text:l(\"auto\"),className:\"jsoneditor-type-auto\",title:r.auto,click:function(){n._onAppend(\"\",\"\",\"auto\")}},{text:l(\"array\"),className:\"jsoneditor-type-array\",title:r.array,click:function(){n._onAppend(\"\",[])}},{text:l(\"object\"),className:\"jsoneditor-type-object\",title:r.object,click:function(){n._onAppend(\"\",{})}},{text:l(\"string\"),className:\"jsoneditor-type-string\",title:r.string,click:function(){n._onAppend(\"\",\"\",\"string\")}}];n.addTemplates(u,!0),s.push({text:l(\"appendText\"),title:l(\"appendTitle\"),submenuTitle:l(\"appendSubmenuTitle\"),className:\"jsoneditor-append\",click:function(){n._onAppend(\"\",\"\",\"auto\")},submenu:u})}var h=[{text:l(\"auto\"),className:\"jsoneditor-type-auto\",title:r.auto,click:function(){n._onInsertBefore(\"\",\"\",\"auto\")}},{text:l(\"array\"),className:\"jsoneditor-type-array\",title:r.array,click:function(){n._onInsertBefore(\"\",[])}},{text:l(\"object\"),className:\"jsoneditor-type-object\",title:r.object,click:function(){n._onInsertBefore(\"\",{})}},{text:l(\"string\"),className:\"jsoneditor-type-string\",title:r.string,click:function(){n._onInsertBefore(\"\",\"\",\"string\")}}];n.addTemplates(h,!1),s.push({text:l(\"insert\"),title:l(\"insertTitle\"),submenuTitle:l(\"insertSub\"),className:\"jsoneditor-insert\",click:function(){n._onInsertBefore(\"\",\"\",\"auto\")},submenu:h}),this.editable.field&&(s.push({text:l(\"duplicateText\"),title:l(\"duplicateField\"),className:\"jsoneditor-duplicate\",click:function(){i.onDuplicate(n)}}),s.push({text:l(\"removeText\"),title:l(\"removeField\"),className:\"jsoneditor-remove\",click:function(){i.onRemove(n)}}))}new o(s,{close:t}).show(e,this.editor.content)},i.prototype._getType=function(e){return e instanceof Array?\"array\":e instanceof Object?\"object\":\"string\"==typeof e&&\"string\"!=typeof this._stringCast(e)?\"string\":\"auto\"},i.prototype._stringCast=function(e){var t=e.toLowerCase(),n=Number(e),i=parseFloat(e);return\"\"==e?\"\":\"null\"==t?null:\"true\"==t||\"false\"!=t&&(isNaN(n)||isNaN(i)?e:n)},i.prototype._escapeHTML=function(e){if(\"string\"!=typeof e)return String(e);var t=String(e).replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/  /g,\" &nbsp;\").replace(/^ /,\"&nbsp;\").replace(/ $/,\"&nbsp;\"),n=JSON.stringify(t),i=n.substring(1,n.length-1);return!0===this.editor.options.escapeUnicode&&(i=a.escapeUnicodeChars(i)),i},i.prototype._unescapeHTML=function(e){var t='\"'+this._escapeJSON(e)+'\"';return a.parse(t).replace(/&lt;/g,\"<\").replace(/&gt;/g,\">\").replace(/&nbsp;|\\u00A0/g,\" \").replace(/&amp;/g,\"&\")},i.prototype._escapeJSON=function(e){for(var t=\"\",n=0;n<e.length;){var i=e.charAt(n);\"\\n\"==i?t+=\"\\\\n\":\"\\\\\"==i?(t+=i,n++,i=e.charAt(n),\"\"!==i&&-1!='\"\\\\/bfnrtu'.indexOf(i)||(t+=\"\\\\\"),t+=i):t+='\"'==i?'\\\\\"':i,n++}return t};var c=s(i);e.exports=i},molP:function(e,t,n){\"use strict\";function i(e){var t={};\"string\"==typeof e.value?t.title=e.value:\"function\"==typeof e.value?t.title=e.value:\"object\"===u(e.value)&&(t=n.i(l.a)(e.value)),e.arg&&(t.container=\"#\"+e.arg),n.i(l.b)(e.modifiers).forEach(function(e){if(/^html$/.test(e))t.html=!0;else if(/^nofade$/.test(e))t.animation=!1;else if(/^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/.test(e))t.placement=e;else if(/^(window|viewport)$/.test(e))t.boundary=e;else if(/^d\\d+$/.test(e)){var n=parseInt(e.slice(1),10)||0;n&&(t.delay=n)}else if(/^o-?\\d+$/.test(e)){var i=parseInt(e.slice(1),10)||0;i&&(t.offset=i)}});var i={};return(\"string\"==typeof t.trigger?t.trigger.trim().split(/\\s+/):[]).forEach(function(e){f[e]&&(i[e]=!0)}),n.i(l.b)(f).forEach(function(t){e.modifiers[t]&&(i[t]=!0)}),t.trigger=n.i(l.b)(i).join(\" \"),\"blur\"===t.trigger&&(t.trigger=\"focus\"),t.trigger||delete t.trigger,t}function r(e,t,r){if(h)return s.a?void(e[d]?e[d].updateConfig(i(t)):e[d]=new a.a(e,i(t),r.context.$root)):void n.i(c.a)(\"v-b-tooltip: Popper.js is required for tooltips to work\")}function o(e){h&&e[d]&&(e[d].destroy(),e[d]=null,delete e[d])}var s=n(\"Zgw8\"),a=n(\"AFT4\"),l=n(\"/CDJ\"),c=n(\"7C8l\"),u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},h=\"undefined\"!=typeof window&&\"undefined\"!=typeof document,d=\"__BV_ToolTip__\",f={focus:!0,hover:!0,click:!0,blur:!0};t.a={bind:function(e,t,n){r(e,t,n)},inserted:function(e,t,n){r(e,t,n)},update:function(e,t,n){t.value!==t.oldValue&&r(e,t,n)},componentUpdated:function(e,t,n){t.value!==t.oldValue&&r(e,t,n)},unbind:function(e){o(e)}}},mpc6:function(e,t,n){\"use strict\";var i=n(\"BiGh\"),r=n(\"sGYS\"),o=n(\"q21c\"),s={bFormCheckbox:i.a,bCheckbox:i.a,bCheck:i.a,bFormCheckboxGroup:r.a,bCheckboxGroup:r.a,bCheckGroup:r.a},a={install:function(e){n.i(o.c)(e,s)}};n.i(o.a)(a),t.a=a},mxOy:function(e,t,n){\"use strict\";var i=n(\"ESch\"),r=n(\"G+QY\"),o=n(\"q21c\"),s={bModal:i.a},a={install:function(e){n.i(o.c)(e,s),e.use(r.a)}};n.i(o.a)(a),t.a=a},mypn:function(e,t,n){(function(e,t){!function(e,n){\"use strict\";function i(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var i={callback:e,args:t};return c[l]=i,a(l),l++}function r(e){delete c[e]}function o(e){var t=e.callback,i=e.args;switch(i.length){case 0:t();break;case 1:t(i[0]);break;case 2:t(i[0],i[1]);break;case 3:t(i[0],i[1],i[2]);break;default:t.apply(n,i)}}function s(e){if(u)setTimeout(s,0,e);else{var t=c[e];if(t){u=!0;try{o(t)}finally{r(e),u=!1}}}}if(!e.setImmediate){var a,l=1,c={},u=!1,h=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,\"[object process]\"==={}.toString.call(e.process)?function(){a=function(e){t.nextTick(function(){s(e)})}}():function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=n,t}}()?function(){var t=\"setImmediate$\"+Math.random()+\"$\",n=function(n){n.source===e&&\"string\"==typeof n.data&&0===n.data.indexOf(t)&&s(+n.data.slice(t.length))};e.addEventListener?e.addEventListener(\"message\",n,!1):e.attachEvent(\"onmessage\",n),a=function(n){e.postMessage(t+n,\"*\")}}():e.MessageChannel?function(){var e=new MessageChannel;e.port1.onmessage=function(e){s(e.data)},a=function(t){e.port2.postMessage(t)}}():h&&\"onreadystatechange\"in h.createElement(\"script\")?function(){var e=h.documentElement;a=function(t){var n=h.createElement(\"script\");n.onreadystatechange=function(){s(t),n.onreadystatechange=null,e.removeChild(n),n=null},e.appendChild(n)}}():function(){a=function(e){setTimeout(s,0,e)}}(),d.setImmediate=i,d.clearImmediate=r}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(t,n(\"DuR2\"),n(\"W2nU\"))},n5GY:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"2PZM\"),o=n(\"il3A\"),s=n(\"/CDJ\"),a=n(\"GnGf\"),l=n(\"etPs\"),c=[\"a\",\"router-link\",\"button\",\"b-link\"],u=n.i(l.c)();delete u.href.default,delete u.to.default;var h=n.i(s.a)({tag:{type:String,default:\"div\"},action:{type:Boolean,default:null},button:{type:Boolean,default:null},variant:{type:String,default:null}},u);t.a={functional:!0,props:h,render:function(e,t){var s,h=t.props,d=t.data,f=t.children,p=h.button?\"button\":h.href||h.to?l.b:h.tag,m=Boolean(h.href||h.to||h.action||h.button||n.i(a.d)(c,h.tag)),g={staticClass:\"list-group-item\",class:(s={},i(s,\"list-group-item-\"+h.variant,Boolean(h.variant)),i(s,\"list-group-item-action\",m),i(s,\"active\",h.active),i(s,\"disabled\",h.disabled),s),attrs:\"button\"===p&&h.disabled?{disabled:!0}:{},props:h.button?{}:n.i(o.a)(u,h)};return e(p,n.i(r.a)(d,g),f)}}},n9qK:function(e,t,n){\"use strict\";var i=n(\"nIHM\"),r=n(\"q21c\"),o={bToggle:i.a},s={install:function(e){n.i(r.b)(e,o)}};n.i(r.a)(s),t.a=s},nIHM:function(e,t,n){\"use strict\";var i=n(\"5osV\"),r=n(\"Kz7p\"),o=\"undefined\"!=typeof window,s={click:!0},a=\"__BV_toggle__\";t.a={bind:function(e,t,l){var c=n.i(i.a)(l,t,s,function(e){var t=e.targets,n=e.vnode;t.forEach(function(e){n.context.$root.$emit(\"bv::toggle::collapse\",e)})});o&&l.context&&c.length>0&&(n.i(r.g)(e,\"aria-controls\",c.join(\" \")),n.i(r.g)(e,\"aria-expanded\",\"false\"),\"BUTTON\"!==e.tagName&&n.i(r.g)(e,\"role\",\"button\"),e[a]=function(t,i){-1!==c.indexOf(t)&&(n.i(r.g)(e,\"aria-expanded\",i?\"true\":\"false\"),i?n.i(r.c)(e,\"collapsed\"):n.i(r.b)(e,\"collapsed\"))},l.context.$root.$on(\"bv::collapse::state\",e[a]))},unbind:function(e,t,n){e[a]&&(n.context.$root.$off(\"bv::collapse::state\",e[a]),e[a]=null)}}},no5d:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),h=\"valid\"+r,d=\"errs__\"+r,f=e.util.copy(e),p=\"\";f.level++;var m=\"valid\"+f.level;if(s.every(function(t){return e.util.schemaHasRules(t,e.RULES.all)})){var g=f.baseId;i+=\" var \"+d+\" = errors; var \"+h+\" = false;  \";var v=e.compositeRule;e.compositeRule=f.compositeRule=!0;var y=s;if(y)for(var b,w=-1,C=y.length-1;w<C;)b=y[w+=1],f.schema=b,f.schemaPath=a+\"[\"+w+\"]\",f.errSchemaPath=l+\"/\"+w,i+=\"  \"+e.validate(f)+\" \",f.baseId=g,i+=\" \"+h+\" = \"+h+\" || \"+m+\"; if (!\"+h+\") { \",p+=\"}\";e.compositeRule=f.compositeRule=v,i+=\" \"+p+\" if (!\"+h+\") {   var err =   \",!1!==e.createErrors?(i+=\" { keyword: 'anyOf' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: {} \",!1!==e.opts.messages&&(i+=\" , message: 'should match some schema in anyOf' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \",i+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",!e.compositeRule&&c&&(e.async?i+=\" throw new ValidationError(vErrors); \":i+=\" validate.errors = vErrors; return false; \"),i+=\" } else {  errors = \"+d+\"; if (vErrors !== null) { if (\"+d+\") vErrors.length = \"+d+\"; else vErrors = null; } \",e.opts.allErrors&&(i+=\" } \"),i=e.util.cleanUpCode(i)}else c&&(i+=\" if (true) { \");return i}},o6bs:function(e,t,n){\"use strict\";var i=n(\"FGX+\"),r=n(\"q21c\"),o={bFormInput:i.a,bInput:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},oLzF:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"2PZM\"),o={tag:{type:String,default:\"div\"},verticalAlign:{type:String,default:\"top\"}};t.a={functional:!0,props:o,render:function(e,t){var o=t.props,s=t.data,a=t.children;return e(o.tag,n.i(r.a)(s,{staticClass:\"d-flex\",class:i({},\"align-self-\"+o.verticalAlign,o.verticalAlign)}),a)}}},ob1s:function(e,t,n){\"use strict\";var i=n(\"q21c\"),r=n(\"YfH7\"),o=n(\"vxJQ\"),s=n(\"gMle\"),a=n(\"Hea7\"),l=n(\"8mh2\"),c={bInputGroup:r.a,bInputGroupAddon:o.a,bInputGroupPrepend:s.a,bInputGroupAppend:a.a,bInputGroupText:l.a},u={install:function(e){n.i(i.c)(e,c)}};n.i(i.a)(u),t.a=u},oiJL:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),h=\"errs__\"+r,d=e.util.copy(e);d.level++;var f=\"valid\"+d.level;if(e.util.schemaHasRules(s,e.RULES.all)){d.schema=s,d.schemaPath=a,d.errSchemaPath=l;var p=\"key\"+r,m=\"idx\"+r,g=\"i\"+r,v=\"' + \"+p+\" + '\",y=d.dataLevel=e.dataLevel+1,b=\"data\"+y,w=\"dataProperties\"+r,C=e.opts.ownProperties,A=e.baseId;i+=\" var \"+h+\" = errors; \",C&&(i+=\" var \"+w+\" = undefined; \"),i+=C?\" \"+w+\" = \"+w+\" || Object.keys(\"+u+\"); for (var \"+m+\"=0; \"+m+\"<\"+w+\".length; \"+m+\"++) { var \"+p+\" = \"+w+\"[\"+m+\"]; \":\" for (var \"+p+\" in \"+u+\") { \",i+=\" var startErrs\"+r+\" = errors; \";var E=p,x=e.compositeRule;e.compositeRule=d.compositeRule=!0;var F=e.validate(d);d.baseId=A,e.util.varOccurences(F,b)<2?i+=\" \"+e.util.varReplace(F,b,E)+\" \":i+=\" var \"+b+\" = \"+E+\"; \"+F+\" \",e.compositeRule=d.compositeRule=x,i+=\" if (!\"+f+\") { for (var \"+g+\"=startErrs\"+r+\"; \"+g+\"<errors; \"+g+\"++) { vErrors[\"+g+\"].propertyName = \"+p+\"; }   var err =   \",!1!==e.createErrors?(i+=\" { keyword: 'propertyNames' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { propertyName: '\"+v+\"' } \",!1!==e.opts.messages&&(i+=\" , message: 'property name \\\\'\"+v+\"\\\\' is invalid' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \",i+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",!e.compositeRule&&c&&(e.async?i+=\" throw new ValidationError(vErrors); \":i+=\" validate.errors = vErrors; return false; \"),c&&(i+=\" break; \"),i+=\" } }\"}return c&&(i+=\"  if (\"+h+\" == errors) {\"),i=e.util.cleanUpCode(i)}},p328:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i,r,o=\" \",s=e.level,a=e.dataLevel,l=e.schema[t],c=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+\"/\"+t,h=!e.opts.allErrors,d=\"data\"+(a||\"\"),f=e.opts.$data&&l&&l.$data;f?(o+=\" var schema\"+s+\" = \"+e.util.getData(l.$data,a,e.dataPathArr)+\"; \",r=\"schema\"+s):r=l;var p=\"maximum\"==t,m=p?\"exclusiveMaximum\":\"exclusiveMinimum\",g=e.schema[m],v=e.opts.$data&&g&&g.$data,y=p?\"<\":\">\",b=p?\">\":\"<\",i=void 0;if(v){var w=e.util.getData(g.$data,a,e.dataPathArr),C=\"exclusive\"+s,A=\"exclType\"+s,E=\"exclIsNumber\"+s,x=\"op\"+s,F=\"' + \"+x+\" + '\";o+=\" var schemaExcl\"+s+\" = \"+w+\"; \",w=\"schemaExcl\"+s,o+=\" var \"+C+\"; var \"+A+\" = typeof \"+w+\"; if (\"+A+\" != 'boolean' && \"+A+\" != 'undefined' && \"+A+\" != 'number') { \";var i=m,S=S||[];S.push(o),o=\"\",!1!==e.createErrors?(o+=\" { keyword: '\"+(i||\"_exclusiveLimit\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(u)+\" , params: {} \",!1!==e.opts.messages&&(o+=\" , message: '\"+m+\" should be boolean' \"),e.opts.verbose&&(o+=\" , schema: validate.schema\"+c+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),o+=\" } \"):o+=\" {} \";var $=o;o=S.pop(),!e.compositeRule&&h?e.async?o+=\" throw new ValidationError([\"+$+\"]); \":o+=\" validate.errors = [\"+$+\"]; return false; \":o+=\" var err = \"+$+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",o+=\" } else if ( \",f&&(o+=\" (\"+r+\" !== undefined && typeof \"+r+\" != 'number') || \"),o+=\" \"+A+\" == 'number' ? ( (\"+C+\" = \"+r+\" === undefined || \"+w+\" \"+y+\"= \"+r+\") ? \"+d+\" \"+b+\"= \"+w+\" : \"+d+\" \"+b+\" \"+r+\" ) : ( (\"+C+\" = \"+w+\" === true) ? \"+d+\" \"+b+\"= \"+r+\" : \"+d+\" \"+b+\" \"+r+\" ) || \"+d+\" !== \"+d+\") { var op\"+s+\" = \"+C+\" ? '\"+y+\"' : '\"+y+\"=';\"}else{var E=\"number\"==typeof g,F=y;if(E&&f){var x=\"'\"+F+\"'\";o+=\" if ( \",f&&(o+=\" (\"+r+\" !== undefined && typeof \"+r+\" != 'number') || \"),o+=\" ( \"+r+\" === undefined || \"+g+\" \"+y+\"= \"+r+\" ? \"+d+\" \"+b+\"= \"+g+\" : \"+d+\" \"+b+\" \"+r+\" ) || \"+d+\" !== \"+d+\") { \"}else{E&&void 0===l?(C=!0,i=m,u=e.errSchemaPath+\"/\"+m,r=g,b+=\"=\"):(E&&(r=Math[p?\"min\":\"max\"](g,l)),g===(!E||r)?(C=!0,i=m,u=e.errSchemaPath+\"/\"+m,b+=\"=\"):(C=!1,F+=\"=\"));var x=\"'\"+F+\"'\";o+=\" if ( \",f&&(o+=\" (\"+r+\" !== undefined && typeof \"+r+\" != 'number') || \"),o+=\" \"+d+\" \"+b+\" \"+r+\" || \"+d+\" !== \"+d+\") { \"}}i=i||t;var S=S||[];S.push(o),o=\"\",!1!==e.createErrors?(o+=\" { keyword: '\"+(i||\"_limit\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(u)+\" , params: { comparison: \"+x+\", limit: \"+r+\", exclusive: \"+C+\" } \",!1!==e.opts.messages&&(o+=\" , message: 'should be \"+F+\" \",o+=f?\"' + \"+r:r+\"'\"),e.opts.verbose&&(o+=\" , schema:  \",o+=f?\"validate.schema\"+c:\"\"+l,o+=\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),o+=\" } \"):o+=\" {} \";var $=o;return o=S.pop(),!e.compositeRule&&h?e.async?o+=\" throw new ValidationError([\"+$+\"]); \":o+=\" validate.errors = [\"+$+\"]; return false; \":o+=\" var err = \"+$+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",o+=\" } \",h&&(o+=\" else { \"),o}},pDyP:function(e,t,n){\"use strict\";var i=n(\"84LI\"),r=n(\"q21c\"),o={bPopover:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},peot:function(e,t,n){(function(t){function n(e,t,n,i){var r=-1,o=e?e.length:0;for(i&&o&&(n=e[++r]);++r<o;)n=t(n,e[r],r,e);return n}function i(e){return e.split(\"\")}function r(e){return e.match(w)||[]}function o(e){return H.test(e)}function s(e){return V.test(e)}function a(e){return o(e)?l(e):i(e)}function l(e){return e.match(j)||[]}function c(e){return e.match(N)||[]}function u(e,t,n){var i=-1,r=e.length;t<0&&(t=-t>r?0:r+t),n=n>r?r:n,n<0&&(n+=r),r=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(r);++i<r;)o[i]=e[i+t];return o}function h(e){if(\"string\"==typeof e)return e;if(p(e))return X?X.call(e):\"\";var t=e+\"\";return\"0\"==t&&1/e==-y?\"-0\":t}function d(e,t,n){var i=e.length;return n=void 0===n?i:n,!t&&n>=i?e:u(e,t,n)}function f(e){return!!e&&\"object\"==typeof e}function p(e){return\"symbol\"==typeof e||f(e)&&J.call(e)==b}function m(e){return null==e?\"\":h(e)}function g(e){return(e=m(e))&&e.replace(C,q).replace(I,\"\")}function v(e,t,n){return e=m(e),t=n?void 0:t,void 0===t?s(e)?c(e):r(e):e.match(t)||[]}var y=1/0,b=\"[object Symbol]\",w=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,C=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,A=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",E=\"[\"+A+\"]\",x=\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23\\\\u20d0-\\\\u20f0]\",F=\"[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]\",S=\"[^\\\\ud800-\\\\udfff\"+A+\"\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]\",$=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",k=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",_=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",B=\"[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]\",D=\"(?:\"+F+\"|\"+S+\")\",T=\"(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23\\\\u20d0-\\\\u20f0]|\\\\ud83c[\\\\udffb-\\\\udfff])?\",L=\"(?:\\\\u200d(?:\"+[\"[^\\\\ud800-\\\\udfff]\",k,_].join(\"|\")+\")[\\\\ufe0e\\\\ufe0f]?\"+T+\")*\",O=\"[\\\\ufe0e\\\\ufe0f]?\"+T+L,R=\"(?:\"+[\"[\\\\u2700-\\\\u27bf]\",k,_].join(\"|\")+\")\"+O,P=\"(?:\"+[\"[^\\\\ud800-\\\\udfff]\"+x+\"?\",x,k,_,\"[\\\\ud800-\\\\udfff]\"].join(\"|\")+\")\",M=RegExp(\"['’]\",\"g\"),I=RegExp(x,\"g\"),j=RegExp($+\"(?=\"+$+\")|\"+P+O,\"g\"),N=RegExp([B+\"?\"+F+\"+(?:['’](?:d|ll|m|re|s|t|ve))?(?=\"+[E,B,\"$\"].join(\"|\")+\")\",\"(?:[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=\"+[E,B+D,\"$\"].join(\"|\")+\")\",B+\"?\"+D+\"+(?:['’](?:d|ll|m|re|s|t|ve))?\",B+\"+(?:['’](?:D|LL|M|RE|S|T|VE))?\",\"\\\\d+\",R].join(\"|\"),\"g\"),H=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23\\\\u20d0-\\\\u20f0\\\\ufe0e\\\\ufe0f]\"),V=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,W={\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"Ç\":\"C\",\"ç\":\"c\",\"Ð\":\"D\",\"ð\":\"d\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"Ñ\":\"N\",\"ñ\":\"n\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"Ý\":\"Y\",\"ý\":\"y\",\"ÿ\":\"y\",\"Æ\":\"Ae\",\"æ\":\"ae\",\"Þ\":\"Th\",\"þ\":\"th\",\"ß\":\"ss\",\"Ā\":\"A\",\"Ă\":\"A\",\"Ą\":\"A\",\"ā\":\"a\",\"ă\":\"a\",\"ą\":\"a\",\"Ć\":\"C\",\"Ĉ\":\"C\",\"Ċ\":\"C\",\"Č\":\"C\",\"ć\":\"c\",\"ĉ\":\"c\",\"ċ\":\"c\",\"č\":\"c\",\"Ď\":\"D\",\"Đ\":\"D\",\"ď\":\"d\",\"đ\":\"d\",\"Ē\":\"E\",\"Ĕ\":\"E\",\"Ė\":\"E\",\"Ę\":\"E\",\"Ě\":\"E\",\"ē\":\"e\",\"ĕ\":\"e\",\"ė\":\"e\",\"ę\":\"e\",\"ě\":\"e\",\"Ĝ\":\"G\",\"Ğ\":\"G\",\"Ġ\":\"G\",\"Ģ\":\"G\",\"ĝ\":\"g\",\"ğ\":\"g\",\"ġ\":\"g\",\"ģ\":\"g\",\"Ĥ\":\"H\",\"Ħ\":\"H\",\"ĥ\":\"h\",\"ħ\":\"h\",\"Ĩ\":\"I\",\"Ī\":\"I\",\"Ĭ\":\"I\",\"Į\":\"I\",\"İ\":\"I\",\"ĩ\":\"i\",\"ī\":\"i\",\"ĭ\":\"i\",\"į\":\"i\",\"ı\":\"i\",\"Ĵ\":\"J\",\"ĵ\":\"j\",\"Ķ\":\"K\",\"ķ\":\"k\",\"ĸ\":\"k\",\"Ĺ\":\"L\",\"Ļ\":\"L\",\"Ľ\":\"L\",\"Ŀ\":\"L\",\"Ł\":\"L\",\"ĺ\":\"l\",\"ļ\":\"l\",\"ľ\":\"l\",\"ŀ\":\"l\",\"ł\":\"l\",\"Ń\":\"N\",\"Ņ\":\"N\",\"Ň\":\"N\",\"Ŋ\":\"N\",\"ń\":\"n\",\"ņ\":\"n\",\"ň\":\"n\",\"ŋ\":\"n\",\"Ō\":\"O\",\"Ŏ\":\"O\",\"Ő\":\"O\",\"ō\":\"o\",\"ŏ\":\"o\",\"ő\":\"o\",\"Ŕ\":\"R\",\"Ŗ\":\"R\",\"Ř\":\"R\",\"ŕ\":\"r\",\"ŗ\":\"r\",\"ř\":\"r\",\"Ś\":\"S\",\"Ŝ\":\"S\",\"Ş\":\"S\",\"Š\":\"S\",\"ś\":\"s\",\"ŝ\":\"s\",\"ş\":\"s\",\"š\":\"s\",\"Ţ\":\"T\",\"Ť\":\"T\",\"Ŧ\":\"T\",\"ţ\":\"t\",\"ť\":\"t\",\"ŧ\":\"t\",\"Ũ\":\"U\",\"Ū\":\"U\",\"Ŭ\":\"U\",\"Ů\":\"U\",\"Ű\":\"U\",\"Ų\":\"U\",\"ũ\":\"u\",\"ū\":\"u\",\"ŭ\":\"u\",\"ů\":\"u\",\"ű\":\"u\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"Ż\":\"Z\",\"Ž\":\"Z\",\"ź\":\"z\",\"ż\":\"z\",\"ž\":\"z\",\"Ĳ\":\"IJ\",\"ĳ\":\"ij\",\"Œ\":\"Oe\",\"œ\":\"oe\",\"ŉ\":\"'n\",\"ſ\":\"ss\"},z=\"object\"==typeof t&&t&&t.Object===Object&&t,U=\"object\"==typeof self&&self&&self.Object===Object&&self,K=z||U||Function(\"return this\")(),q=function(e){return function(t){return null==e?void 0:e[t]}}(W),G=Object.prototype,J=G.toString,Q=K.Symbol,Y=Q?Q.prototype:void 0,X=Y?Y.toString:void 0,Z=function(e){return function(t){return n(v(g(t).replace(M,\"\")),e,\"\")}}(function(e,t,n){return e+(n?\" \":\"\")+ee(t)}),ee=function(e){return function(t){t=m(t);var n=o(t)?a(t):void 0,i=n?n[0]:t.charAt(0),r=n?d(n,1).join(\"\"):t.slice(1);return i[e]()+r}}(\"toUpperCase\");e.exports=Z}).call(t,n(\"DuR2\"))},pk12:function(e,t,n){\"use strict\";function i(e){return e.getRootNode&&e.getRootNode()||window}function r(e,t){function n(e,t,r){r.forEach(function(r){if(\"separator\"==r.type){var o=document.createElement(\"div\");o.className=\"jsoneditor-separator\",l=document.createElement(\"li\"),l.appendChild(o),e.appendChild(l)}else{var a={},l=document.createElement(\"li\");e.appendChild(l);var c=document.createElement(\"button\");if(c.type=\"button\",c.className=r.className,a.button=c,r.title&&(c.title=r.title),r.click&&(c.onclick=function(e){e.preventDefault(),i.hide(),r.click()}),l.appendChild(c),r.submenu){var u=document.createElement(\"div\");u.className=\"jsoneditor-icon\",c.appendChild(u);var h=document.createElement(\"div\");h.className=\"jsoneditor-text\"+(r.click?\"\":\" jsoneditor-right-margin\"),h.appendChild(document.createTextNode(r.text)),c.appendChild(h);var d;if(r.click){c.className+=\" jsoneditor-default\";var f=document.createElement(\"button\");f.type=\"button\",a.buttonExpand=f,f.className=\"jsoneditor-expand\",f.innerHTML='<div class=\"jsoneditor-expand\"></div>',l.appendChild(f),r.submenuTitle&&(f.title=r.submenuTitle),d=f}else{var p=document.createElement(\"div\");p.className=\"jsoneditor-expand\",c.appendChild(p),d=c}d.onclick=function(e){e.preventDefault(),i._onExpandItem(a),d.focus()};var m=[];a.subItems=m;var g=document.createElement(\"ul\");a.ul=g,g.className=\"jsoneditor-menu\",g.style.height=\"0\",l.appendChild(g),n(g,m,r.submenu)}else c.innerHTML='<div class=\"jsoneditor-icon\"></div><div class=\"jsoneditor-text\">'+s(r.text)+\"</div>\";t.push(a)}})}this.dom={};var i=this,r=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var o=document.createElement(\"div\");o.className=\"jsoneditor-contextmenu-root\",r.root=o;var a=document.createElement(\"div\");a.className=\"jsoneditor-contextmenu\",r.menu=a,o.appendChild(a);var l=document.createElement(\"ul\");l.className=\"jsoneditor-menu\",a.appendChild(l),r.list=l,r.items=[];var c=document.createElement(\"button\");c.type=\"button\",r.focusButton=c;var u=document.createElement(\"li\");u.style.overflow=\"hidden\",u.style.height=\"0\",u.appendChild(c),l.appendChild(u),n(l,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var n=24*(e.length+(t.submenu?t.submenu.length:0));i.maxHeight=Math.max(i.maxHeight,n)})}var o=n(\"QmdE\"),s=n(\"+LpG\").translate;r.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(n){e.push(n.button),n.buttonExpand&&e.push(n.buttonExpand),n.subItems&&n==t.expandedItem&&n.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},r.visibleMenu=void 0,r.prototype.show=function(e,t){this.hide();var n=!0,s=e.parentNode,a=e.getBoundingClientRect(),l=s.getBoundingClientRect();if(t){var c=t.getBoundingClientRect();a.bottom+this.maxHeight<c.bottom||a.top-this.maxHeight>c.top&&(n=!1)}var u=a.left-l.left,h=a.top-l.top;if(n){var d=e.offsetHeight;this.dom.menu.style.left=u+\"px\",this.dom.menu.style.top=h+d+\"px\",this.dom.menu.style.bottom=\"\"}else this.dom.menu.style.left=u+\"px\",this.dom.menu.style.top=h+\"px\",this.dom.menu.style.bottom=\"0px\";this.rootNode=i(e),s.insertBefore(this.dom.root,s.firstChild);var f=this,p=this.dom.list;this.eventListeners.mousedown=o.addEventListener(this.rootNode,\"mousedown\",function(e){var t=e.target;t==p||f._isChildOf(t,p)||(f.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=o.addEventListener(this.rootNode,\"keydown\",function(e){f._onKeyDown(e)}),this.selection=o.getSelection(),this.anchor=e,setTimeout(function(){f.dom.focusButton.focus()},0),r.visibleMenu&&r.visibleMenu.hide(),r.visibleMenu=this},r.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&o.removeEventListener(this.rootNode,e,t),delete this.eventListeners[e]}r.visibleMenu==this&&(r.visibleMenu=void 0)},r.prototype._onExpandItem=function(e){var t=this,n=e==this.expandedItem,i=this.expandedItem;if(i&&(i.ul.style.height=\"0\",i.ul.style.padding=\"\",setTimeout(function(){t.expandedItem!=i&&(i.ul.style.display=\"\",o.removeClassName(i.ul.parentNode,\"jsoneditor-selected\"))},300),this.expandedItem=void 0),!n){var r=e.ul;r.style.display=\"block\";r.clientHeight;setTimeout(function(){if(t.expandedItem==e){for(var n=0,i=0;i<r.childNodes.length;i++)n+=r.childNodes[i].clientHeight;r.style.height=n+\"px\",r.style.padding=\"5px 10px\"}},0),o.addClassName(r.parentNode,\"jsoneditor-selected\"),this.expandedItem=e}},r.prototype._onKeyDown=function(e){var t,n,i,r,s=e.target,a=e.which,l=!1;27==a?(this.selection&&o.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),0==(n=t.indexOf(s))&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),(n=t.indexOf(s))==t.length-1&&(t[0].focus(),l=!0)):37==a?(\"jsoneditor-expand\"==s.className&&(t=this._getVisibleButtons(),n=t.indexOf(s),(i=t[n-1])&&i.focus()),l=!0):38==a?(t=this._getVisibleButtons(),n=t.indexOf(s),i=t[n-1],i&&\"jsoneditor-expand\"==i.className&&(i=t[n-2]),i||(i=t[t.length-1]),i&&i.focus(),l=!0):39==a?(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&\"jsoneditor-expand\"==r.className&&r.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&\"jsoneditor-expand\"==r.className&&(r=t[n+2]),r||(r=t[0]),r&&(r.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},r.prototype._isChildOf=function(e,t){for(var n=e.parentNode;n;){if(n==t)return!0;n=n.parentNode}return!1},e.exports=r},pk8h:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={id:{type:String,default:null},tag:{type:String,default:\"h6\"}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.children;return e(r.tag,n.i(i.a)(o,{staticClass:\"dropdown-header\",attrs:{id:r.id||null}}),s)}}},q21c:function(e,t,n){\"use strict\";function i(e,t,n){e._bootstrap_vue_components_=e._bootstrap_vue_components_||{};var i=e._bootstrap_vue_components_[t];return!i&&n&&t&&(e._bootstrap_vue_components_[t]=!0,e.component(t,n)),i}function r(e,t){for(var n in t)i(e,n,t[n])}function o(e,t,n){e._bootstrap_vue_directives_=e._bootstrap_vue_directives_||{};var i=e._bootstrap_vue_directives_[t];return!i&&n&&t&&(e._bootstrap_vue_directives_[t]=!0,e.directive(t,n)),i}function s(e,t){for(var n in t)o(e,n,t[n])}function a(e){\"undefined\"!=typeof window&&window.Vue&&window.Vue.use(e)}t.c=r,t.b=s,t.a=a},q2kL:function(e,t,n){\"use strict\";var i=n(\"EXyZ\"),r=n(\"q21c\"),o={bTooltip:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},q32r:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={id:{type:String,default:null},tag:{type:String,default:\"div\"},forceShow:{type:Boolean,default:!1}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.children;return e(r.tag,n.i(i.a)(o,{staticClass:\"invalid-feedback\",class:{\"d-block\":r.forceShow},attrs:{id:r.id}}),s)}}},qHHr:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={tag:{type:String,default:\"ul\"},fill:{type:Boolean,default:!1},justified:{type:Boolean,default:!1}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.children;return e(r.tag,n.i(i.a)(o,{staticClass:\"navbar-nav\",class:{\"nav-fill\":r.fill,\"nav-justified\":r.justified}}),s)}}},qIPk:function(e,t,n){\"use strict\";var i=n(\"w+xg\"),r=n(\"xGBE\"),o=n(\"ckuA\"),s=n(\"LHeC\"),a=n(\"QjOx\"),l=n(\"y47G\"),c=n(\"q21c\"),u={bNav:i.a,bNavItem:r.a,bNavText:o.a,bNavForm:s.a,bNavItemDropdown:a.a,bNavItemDd:a.a,bNavDropdown:a.a,bNavDd:a.a},h={install:function(e){n.i(c.c)(e,u),e.use(l.a)}};n.i(c.a)(h),t.a=h},qOJP:function(e,t,n){\"use strict\";e.exports={isString:function(e){return\"string\"==typeof e},isObject:function(e){return\"object\"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},qUfZ:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),h=\"valid\"+r,d=\"errs__\"+r,f=e.util.copy(e),p=\"\";f.level++;var m=\"valid\"+f.level,g=\"i\"+r,v=f.dataLevel=e.dataLevel+1,y=\"data\"+v,b=e.baseId;if(i+=\"var \"+d+\" = errors;var \"+h+\";\",Array.isArray(s)){var w=e.schema.additionalItems;if(!1===w){i+=\" \"+h+\" = \"+u+\".length <= \"+s.length+\"; \";var C=l;l=e.errSchemaPath+\"/additionalItems\",i+=\"  if (!\"+h+\") {   \";var A=A||[];A.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'additionalItems' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { limit: \"+s.length+\" } \",!1!==e.opts.messages&&(i+=\" , message: 'should NOT have more than \"+s.length+\" items' \"),e.opts.verbose&&(i+=\" , schema: false , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var E=i;i=A.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+E+\"]); \":i+=\" validate.errors = [\"+E+\"]; return false; \":i+=\" var err = \"+E+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",i+=\" } \",l=C,c&&(p+=\"}\",i+=\" else { \")}var x=s;if(x)for(var F,S=-1,$=x.length-1;S<$;)if(F=x[S+=1],e.util.schemaHasRules(F,e.RULES.all)){i+=\" \"+m+\" = true; if (\"+u+\".length > \"+S+\") { \";var k=u+\"[\"+S+\"]\";f.schema=F,f.schemaPath=a+\"[\"+S+\"]\",f.errSchemaPath=l+\"/\"+S,f.errorPath=e.util.getPathExpr(e.errorPath,S,e.opts.jsonPointers,!0),f.dataPathArr[v]=S;var _=e.validate(f);f.baseId=b,e.util.varOccurences(_,y)<2?i+=\" \"+e.util.varReplace(_,y,k)+\" \":i+=\" var \"+y+\" = \"+k+\"; \"+_+\" \",i+=\" }  \",c&&(i+=\" if (\"+m+\") { \",p+=\"}\")}if(\"object\"==typeof w&&e.util.schemaHasRules(w,e.RULES.all)){f.schema=w,f.schemaPath=e.schemaPath+\".additionalItems\",f.errSchemaPath=e.errSchemaPath+\"/additionalItems\",i+=\" \"+m+\" = true; if (\"+u+\".length > \"+s.length+\") {  for (var \"+g+\" = \"+s.length+\"; \"+g+\" < \"+u+\".length; \"+g+\"++) { \",f.errorPath=e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers,!0);var k=u+\"[\"+g+\"]\";f.dataPathArr[v]=g;var _=e.validate(f);f.baseId=b,e.util.varOccurences(_,y)<2?i+=\" \"+e.util.varReplace(_,y,k)+\" \":i+=\" var \"+y+\" = \"+k+\"; \"+_+\" \",c&&(i+=\" if (!\"+m+\") break; \"),i+=\" } }  \",c&&(i+=\" if (\"+m+\") { \",p+=\"}\")}}else if(e.util.schemaHasRules(s,e.RULES.all)){f.schema=s,f.schemaPath=a,f.errSchemaPath=l,i+=\"  for (var \"+g+\" = 0; \"+g+\" < \"+u+\".length; \"+g+\"++) { \",f.errorPath=e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers,!0);var k=u+\"[\"+g+\"]\";f.dataPathArr[v]=g;var _=e.validate(f);f.baseId=b,e.util.varOccurences(_,y)<2?i+=\" \"+e.util.varReplace(_,y,k)+\" \":i+=\" var \"+y+\" = \"+k+\"; \"+_+\" \",c&&(i+=\" if (!\"+m+\") break; \"),i+=\" }\"}return c&&(i+=\" \"+p+\" if (\"+d+\" == errors) {\"),i=e.util.cleanUpCode(i)}},qxK6:function(e,t){e.exports.id=\"ace/mode/json_worker\",e.exports.src='\"no use strict\";!function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\\\.\\\\//,\"\").replace(/\\\\/\\\\.\\\\//,\"/\").replace(/[^\\\\/]+\\\\/\\\\.\\\\.\\\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}}(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.column<point2.column;return point1.row<point2.row||point1.row==point2.row&&bColIsAfter}function $getTransformedPoint(delta,point,moveIfEqual){var deltaIsInsert=\"insert\"==delta.action,deltaRowShift=(deltaIsInsert?1:-1)*(delta.end.row-delta.start.row),deltaColShift=(deltaIsInsert?1:-1)*(delta.end.column-delta.start.column),deltaStart=delta.start,deltaEnd=deltaIsInsert?deltaStart:delta.end;return $pointsInOrder(point,deltaStart,moveIfEqual)?{row:point.row,column:point.column}:$pointsInOrder(deltaEnd,point,!moveIfEqual)?{row:point.row+deltaRowShift,column:point.column+(point.row==deltaEnd.row?deltaColShift:0)}:{row:deltaStart.row,column:deltaStart.column}}oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(delta){if(!(delta.start.row==delta.end.row&&delta.start.row!=this.row||delta.start.row>this.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\\\r\\\\n|\\\\r/g,\"\\\\n\").split(\"\\\\n\")}:function(text){return text.split(/\\\\r\\\\n|\\\\r|\\\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\\\r\\\\n|\\\\r|\\\\n)/m);this.$autoNewLine=match?match[1]:\"\\\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\\\r\\\\n\";case\"unix\":return\"\\\\n\";default:return this.$autoNewLine||\"\\\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\\\r\\\\n\"==text||\"\\\\r\"==text||\"\\\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\\'\\', \\'\\']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\\\s\\\\s*/,trimEndRegexp=/\\\\s\\\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\"[object Object]\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\\\]\\\\/\\\\\\\\])/g,\"\\\\\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&#38;\").replace(/\"/g,\"&#34;\").replace(/\\'/g,\"&#39;\").replace(/</g,\"&#60;\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred.isPending=function(){return timer},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||defaultTimeout))};return _self.delay=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)},_self.schedule=_self,_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/document\",\"ace/lib/lang\"],function(acequire,exports){\"use strict\";acequire(\"../range\").Range;var Document=acequire(\"../document\").Document,lang=acequire(\"../lib/lang\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\"\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\"change\",function(e){var data=e.data;if(data[0].start)doc.applyDeltas(data);else for(var i=0;data.length>i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(){\"use strict\";var at,ch,text,value,escapee={\\'\"\\':\\'\"\\',\"\\\\\\\\\":\"\\\\\\\\\",\"/\":\"/\",b:\"\\\\b\",f:\"\\\\f\",n:\"\\\\n\",r:\"\\\\r\",t:\"\\t\"},error=function(m){throw{name:\"SyntaxError\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\"Expected \\'\"+c+\"\\' instead of \\'\"+ch+\"\\'\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\"\";for(\"-\"===ch&&(string=\"-\",next(\"-\"));ch>=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if(\\'\"\\'===ch)for(;next();){if(\\'\"\\'===ch)return next(),string;if(\"\\\\\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected \\'\"+ch+\"\\'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error(\\'Duplicate key \"\\'+key+\\'\"\\'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case\\'\"\\':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != \\'object\\'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\\t\\\\n\\v\\\\f\\\\r   ᠎             　\\\\u2028\\\\u2029\\ufeff\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can\\'t convert \"+o+\" to object\");return Object(o)}});'},rd7L:function(e,t,n){\"use strict\";var i=n(\"molP\"),r=n(\"q21c\"),o={bTooltip:i.a},s={install:function(e){n.i(r.b)(e,o)}};n.i(r.a)(s),t.a=s},rjj0:function(e,t,n){function i(e){for(var t=0;t<e.length;t++){var n=e[t],i=u[n.id];if(i){i.refs++;for(var r=0;r<i.parts.length;r++)i.parts[r](n.parts[r]);for(;r<n.parts.length;r++)i.parts.push(o(n.parts[r]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{for(var s=[],r=0;r<n.parts.length;r++)s.push(o(n.parts[r]));u[n.id]={id:n.id,refs:1,parts:s}}}}function r(){var e=document.createElement(\"style\");return e.type=\"text/css\",h.appendChild(e),e}function o(e){var t,n,i=document.querySelector(\"style[\"+v+'~=\"'+e.id+'\"]');if(i){if(p)return m;i.parentNode.removeChild(i)}if(y){var o=f++;i=d||(d=r()),t=s.bind(null,i,o,!1),n=s.bind(null,i,o,!0)}else i=r(),t=a.bind(null,i),n=function(){i.parentNode.removeChild(i)};return t(e),function(i){if(i){if(i.css===e.css&&i.media===e.media&&i.sourceMap===e.sourceMap)return;t(e=i)}else n()}}function s(e,t,n,i){var r=n?\"\":i.css;if(e.styleSheet)e.styleSheet.cssText=b(t,r);else{var o=document.createTextNode(r),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(o,s[t]):e.appendChild(o)}}function a(e,t){var n=t.css,i=t.media,r=t.sourceMap;if(i&&e.setAttribute(\"media\",i),g.ssrId&&e.setAttribute(v,t.id),r&&(n+=\"\\n/*# sourceURL=\"+r.sources[0]+\" */\",n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\"),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var l=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!l)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var c=n(\"tTVk\"),u={},h=l&&(document.head||document.getElementsByTagName(\"head\")[0]),d=null,f=0,p=!1,m=function(){},g=null,v=\"data-vue-ssr-id\",y=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());e.exports=function(e,t,n,r){p=n,g=r||{};var o=c(e,t);return i(o),function(t){for(var n=[],r=0;r<o.length;r++){var s=o[r],a=u[s.id];a.refs--,n.push(a)}t?(o=c(e,t),i(o)):o=[];for(var r=0;r<n.length;r++){var a=n[r];if(0===a.refs){for(var l=0;l<a.parts.length;l++)a.parts[l]();delete u[a.id]}}}};var b=function(){var e=[];return function(t,n){return e[t]=n,e.filter(Boolean).join(\"\\n\")}}()},rmpQ:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),h=\"valid\"+r,d=e.opts.$data&&s&&s.$data;d&&(i+=\" var schema\"+r+\" = \"+e.util.getData(s.$data,o,e.dataPathArr)+\"; \");var f=\"i\"+r,p=\"schema\"+r;d||(i+=\" var \"+p+\" = validate.schema\"+a+\";\"),i+=\"var \"+h+\";\",d&&(i+=\" if (schema\"+r+\" === undefined) \"+h+\" = true; else if (!Array.isArray(schema\"+r+\")) \"+h+\" = false; else {\"),i+=h+\" = false;for (var \"+f+\"=0; \"+f+\"<\"+p+\".length; \"+f+\"++) if (equal(\"+u+\", \"+p+\"[\"+f+\"])) { \"+h+\" = true; break; }\",d&&(i+=\"  }  \"),i+=\" if (!\"+h+\") {   \";var m=m||[];m.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'enum' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { allowedValues: schema\"+r+\" } \",!1!==e.opts.messages&&(i+=\" , message: 'should be equal to one of the allowed values' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var g=i;return i=m.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+g+\"]); \":i+=\" validate.errors = [\"+g+\"]; return false; \":i+=\" var err = \"+g+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",i+=\" }\",c&&(i+=\" else { \"),i}},rocW:function(e,t,n){\"use strict\";function i(e,t){function n(e,t,n){for(var i,o=0;o<r.length;o++){var s=r[o];if(s.type==t){i=s;break}}i||(i={type:t,rules:[]},r.push(i));var l={keyword:e,definition:n,custom:!0,code:a,implements:n.implements};i.rules.push(l),r.custom[e]=l}function i(e){if(!r.types[e])throw new Error(\"Unknown type \"+e)}var r=this.RULES;if(r.keywords[e])throw new Error(\"Keyword \"+e+\" is already defined\");if(!s.test(e))throw new Error(\"Keyword \"+e+\" is not a valid identifier\");if(t){if(t.macro&&void 0!==t.valid)throw new Error('\"valid\" option cannot be used with macro keywords');var o=t.type;if(Array.isArray(o)){var l,c=o.length;for(l=0;l<c;l++)i(o[l]);for(l=0;l<c;l++)n(e,o[l],t)}else o&&i(o),n(e,o,t);var u=!0===t.$data&&this._opts.$data;if(u&&!t.validate)throw new Error('$data support: \"validate\" function is not defined');var h=t.metaSchema;h&&(u&&(h={anyOf:[h,{$ref:\"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#\"}]}),t.validateSchema=this.compile(h,!0))}return r.keywords[e]=r.all[e]=!0,this}function r(e){var t=this.RULES.custom[e];return t?t.definition:this.RULES.keywords[e]||!1}function o(e){var t=this.RULES;delete t.keywords[e],delete t.all[e],delete t.custom[e];for(var n=0;n<t.length;n++)for(var i=t[n].rules,r=0;r<i.length;r++)if(i[r].keyword==e){i.splice(r,1);break}return this}var s=/^[a-z_$][a-z0-9_$-]*$/i,a=n(\"iiCu\");e.exports={add:i,get:r,remove:o}},s6Sk:function(e,t,n){\"use strict\";var i=Array.isArray,r=Object.keys,o=Object.prototype.hasOwnProperty;e.exports=function e(t,n){if(t===n)return!0;var s,a,l,c=i(t),u=i(n);if(c&&u){if((a=t.length)!=n.length)return!1;for(s=0;s<a;s++)if(!e(t[s],n[s]))return!1;return!0}if(c!=u)return!1;var h=t instanceof Date,d=n instanceof Date;if(h!=d)return!1;if(h&&d)return t.getTime()==n.getTime();var f=t instanceof RegExp,p=n instanceof RegExp;if(f!=p)return!1;if(f&&p)return t.toString()==n.toString();if(t instanceof Object&&n instanceof Object){var m=r(t);if((a=m.length)!==r(n).length)return!1;for(s=0;s<a;s++)if(!o.call(n,m[s]))return!1;for(s=0;s<a;s++)if(l=m[s],!e(t[l],n[l]))return!1;return!0}return!1}},sB3e:function(e,t,n){var i=n(\"52gC\");e.exports=function(e){return Object(i(e))}},sGYS:function(e,t,n){\"use strict\";var i=n(\"OfYj\"),r=n(\"/gqF\"),o=n(\"wen1\"),s=n(\"60E9\"),a=n(\"TMTb\"),l=n(\"dfnb\"),c=n(\"BiGh\");t.a={mixins:[i.a,r.a,s.a,a.a,l.a,o.a],components:{bFormCheckbox:c.a},render:function(e){var t=this,n=t.$slots,i=t.formOptions.map(function(n,i){return e(\"b-form-checkbox\",{key:\"check_\"+i+\"_opt\",props:{id:t.safeId(\"_BV_check_\"+i+\"_opt_\"),name:t.name,value:n.value,required:t.name&&t.required,disabled:n.disabled}},[e(\"span\",{domProps:{innerHTML:n.text}})])});return e(\"div\",{class:t.groupClasses,attrs:{id:t.safeId(),role:\"group\",tabindex:\"-1\",\"aria-required\":t.required?\"true\":null,\"aria-invalid\":t.computedAriaInvalid}},[n.first,i,n.default])},data:function(){return{localChecked:this.checked||[],is_RadioCheckGroup:!0}},model:{prop:\"checked\",event:\"input\"},props:{checked:{type:[String,Number,Object,Array,Boolean],default:null},validated:{type:Boolean,default:!1},ariaInvalid:{type:[Boolean,String],default:!1},stacked:{type:Boolean,default:!1},buttons:{type:Boolean,default:!1},buttonVariant:{type:String,default:\"secondary\"}},watch:{checked:function(e,t){this.localChecked=this.checked},localChecked:function(e,t){this.$emit(\"input\",e)}},computed:{groupClasses:function(){var e=this;return e.buttons?[\"btn-group-toggle\",e.stacked?\"btn-group-vertical\":\"btn-group\",e.size?\"btn-group-\"+this.size:\"\",e.validated?\"was-validated\":\"\"]:[e.sizeFormClass,e.stacked&&e.custom?\"custom-controls-stacked\":\"\",e.validated?\"was-validated\":\"\"]},computedAriaInvalid:function(){var e=this;return!0===e.ariaInvalid||\"true\"===e.ariaInvalid||\"\"===e.ariaInvalid?\"true\":!1===e.get_State?\"true\":null},get_State:function(){return this.computedState}}}},sgFw:function(e,t,n){\"use strict\";function i(e){e&&(this.path=document.createElement(\"div\"),this.path.className=\"jsoneditor-treepath\",e.appendChild(this.path),this.reset())}var r=n(\"pk12\");i.prototype.reset=function(){this.path.innerHTML=\"\"},i.prototype.setPath=function(e){function t(e){this.selectionCallback&&this.selectionCallback(e)}function n(e,t){this.contextMenuCallback&&this.contextMenuCallback(e,t)}var i=this;this.reset(),e&&e.length&&e.forEach(function(o,s){var a,l=document.createElement(\"span\");if(l.className=\"jsoneditor-treepath-element\",l.innerText=o.name,l.onclick=t.bind(i,o),i.path.appendChild(l),o.children.length&&(a=document.createElement(\"span\"),a.className=\"jsoneditor-treepath-seperator\",a.innerHTML=\"&#9658;\",a.onclick=function(){var t=[];o.children.forEach(function(r){t.push({text:r.name,className:\"jsoneditor-type-modes\"+(e[s+1]+1&&e[s+1].name===r.name?\" jsoneditor-selected\":\"\"),click:n.bind(i,o,r.name)})}),new r(t).show(a)},i.path.appendChild(a,i.container)),s===e.length-1){var c=(a||l).getBoundingClientRect().left;i.path.offsetWidth<c&&(i.path.scrollLeft=c)}})},i.prototype.onSectionSelected=function(e){\"function\"==typeof e&&(this.selectionCallback=e)},i.prototype.onContextMenuItemSelected=function(e){\"function\"==typeof e&&(this.contextMenuCallback=e)},e.exports=i},\"sqs/\":function(e,t){function n(e){var t=this,n=h.call(arguments,1);return new Promise(function(r,o){function s(t){var n;try{n=e.next(t)}catch(e){return o(e)}c(n)}function l(t){var n;try{n=e.throw(t)}catch(e){return o(e)}c(n)}function c(e){if(e.done)return r(e.value);var n=i.call(t,e.value);return n&&a(n)?n.then(s,l):l(new TypeError('You may only yield a function, promise, generator, array, or object, but the following object was passed: \"'+String(e.value)+'\"'))}if(\"function\"==typeof e&&(e=e.apply(t,n)),!e||\"function\"!=typeof e.next)return r(e);s()})}function i(e){return e?a(e)?e:c(e)||l(e)?n.call(this,e):\"function\"==typeof e?r.call(this,e):Array.isArray(e)?o.call(this,e):u(e)?s.call(this,e):e:e}function r(e){var t=this;return new Promise(function(n,i){e.call(t,function(e,t){if(e)return i(e);arguments.length>2&&(t=h.call(arguments,1)),n(t)})})}function o(e){return Promise.all(e.map(i,this))}function s(e){for(var t=new e.constructor,n=Object.keys(e),r=[],o=0;o<n.length;o++){var s=n[o],l=i.call(this,e[s]);l&&a(l)?function(e,n){t[n]=void 0,r.push(e.then(function(e){t[n]=e}))}(l,s):t[s]=e[s]}return Promise.all(r).then(function(){return t})}function a(e){return\"function\"==typeof e.then}function l(e){return\"function\"==typeof e.next&&\"function\"==typeof e.throw}function c(e){var t=e.constructor;return!!t&&(\"GeneratorFunction\"===t.name||\"GeneratorFunction\"===t.displayName||l(t.prototype))}function u(e){return Object==e.constructor}var h=Array.prototype.slice;e.exports=n.default=n.co=n,n.wrap=function(e){function t(){return n.call(this,e.apply(this,arguments))}return t.__generatorFunction__=e,t}},t9XS:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={tag:{type:String,default:\"div\"}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.children;return e(r.tag,n.i(i.a)(o,{staticClass:\"media-body\"}),s)}}},tDPY:function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r=n(\"2PZM\"),o={id:{type:String,default:null},tag:{type:String,default:\"small\"},textVariant:{type:String,default:\"muted\"},inline:{type:Boolean,default:!1}};t.a={functional:!0,props:o,render:function(e,t){var o=t.props,s=t.data,a=t.children;return e(o.tag,n.i(r.a)(s,{class:i({\"form-text\":!o.inline},\"text-\"+o.textVariant,Boolean(o.textVariant)),attrs:{id:o.id}}),a)}}},tTVk:function(e,t){e.exports=function(e,t){for(var n=[],i={},r=0;r<t.length;r++){var o=t[r],s=o[0],a=o[1],l=o[2],c=o[3],u={id:e+\":\"+r,css:a,media:l,sourceMap:c};i[s]?i[s].parts.push(u):n.push(i[s]={id:s,parts:[u]})}return n}},tgmf:function(e,t,n){\"use strict\";t.a={SPACE:32,ENTER:13,ESC:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,PAGEUP:33,PAGEDOWN:34,HOME:36,END:35}},\"to/m\":function(e,t,n){\"use strict\";function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function r(e){return{}.toString.call(e).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()}function o(e,t,i){for(var o in i)if(Object.prototype.hasOwnProperty.call(i,o)){var s=i[o],a=t[o],u=a&&n.i(c.n)(a)?\"element\":r(a);u=a&&a._isVue?\"component\":u,new RegExp(s).test(u)||n.i(l.a)(e+': Option \"'+o+'\" provided type \"'+u+'\", but expected type \"'+s+'\"')}}var s=n(\"/CDJ\"),a=n(\"GKfW\"),l=n(\"7C8l\"),c=n(\"Kz7p\"),u=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),h={element:\"body\",offset:10,method:\"auto\",throttle:75},d={element:\"(string|element|component)\",offset:\"number\",method:\"string\",throttle:\"number\"},f={DROPDOWN_ITEM:\"dropdown-item\",ACTIVE:\"active\"},p={ACTIVE:\".active\",NAV_LIST_GROUP:\".nav, .list-group\",NAV_LINKS:\".nav-link\",NAV_ITEMS:\".nav-item\",LIST_ITEMS:\".list-group-item\",DROPDOWN:\".dropdown, .dropup\",DROPDOWN_ITEMS:\".dropdown-item\",DROPDOWN_TOGGLE:\".dropdown-toggle\"},m={OFFSET:\"offset\",POSITION:\"position\"},g=/^#[^\\/!]+/,v=[\"webkitTransitionEnd\",\"transitionend\",\"otransitionend\",\"oTransitionEnd\"],y=function(){function e(t,n,r){i(this,e),this.$el=t,this.$scroller=null,this.$selector=[p.NAV_LINKS,p.LIST_ITEMS,p.DROPDOWN_ITEMS].join(\",\"),this.$offsets=[],this.$targets=[],this.$activeTarget=null,this.$scrollHeight=0,this.$resizeTimeout=null,this.$obs_scroller=null,this.$obs_targets=null,this.$root=r||null,this.$config=null,this.updateConfig(n)}return u(e,[{key:\"updateConfig\",value:function(e,t){this.$scroller&&(this.unlisten(),this.$scroller=null);var i=n.i(s.a)({},this.constructor.Default,e);if(t&&(this.$root=t),o(this.constructor.Name,i,this.constructor.DefaultType),this.$config=i,this.$root){var r=this;this.$root.$nextTick(function(){r.listen()})}else this.listen()}},{key:\"dispose\",value:function(){this.unlisten(),clearTimeout(this.$resizeTimeout),this.$resizeTimeout=null,this.$el=null,this.$config=null,this.$scroller=null,this.$selector=null,this.$offsets=null,this.$targets=null,this.$activeTarget=null,this.$scrollHeight=null}},{key:\"listen\",value:function(){var e=this,t=this.getScroller();t&&\"BODY\"!==t.tagName&&n.i(c.h)(t,\"scroll\",this),n.i(c.h)(window,\"scroll\",this),n.i(c.h)(window,\"resize\",this),n.i(c.h)(window,\"orientationchange\",this),v.forEach(function(t){n.i(c.h)(window,t,e)}),this.setObservers(!0),this.handleEvent(\"refresh\")}},{key:\"unlisten\",value:function(){var e=this,t=this.getScroller();this.setObservers(!1),t&&\"BODY\"!==t.tagName&&n.i(c.i)(t,\"scroll\",this),n.i(c.i)(window,\"scroll\",this),n.i(c.i)(window,\"resize\",this),n.i(c.i)(window,\"orientationchange\",this),v.forEach(function(t){n.i(c.i)(window,t,e)})}},{key:\"setObservers\",value:function(e){var t=this;this.$obs_scroller&&(this.$obs_scroller.disconnect(),this.$obs_scroller=null),this.$obs_targets&&(this.$obs_targets.disconnect(),this.$obs_targets=null),e&&(this.$obs_targets=n.i(a.a)(this.$el,function(){t.handleEvent(\"mutation\")},{subtree:!0,childList:!0,attributes:!0,attributeFilter:[\"href\"]}),this.$obs_scroller=n.i(a.a)(this.getScroller(),function(){t.handleEvent(\"mutation\")},{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:[\"id\",\"style\",\"class\"]}))}},{key:\"handleEvent\",value:function(e){var t=\"string\"==typeof e?e:e.type,n=this;\"scroll\"===t?(this.$obs_scroller||this.listen(),this.process()):/(resize|orientationchange|mutation|refresh)/.test(t)&&function(){n.$resizeTimeout||(n.$resizeTimeout=setTimeout(function(){n.refresh(),n.process(),n.$resizeTimeout=null},n.$config.throttle))}()}},{key:\"refresh\",value:function(){var e=this,t=this.getScroller();if(t){var i=t!==t.window?m.POSITION:m.OFFSET,r=\"auto\"===this.$config.method?i:this.$config.method,o=r===m.POSITION?c.o:c.p,s=r===m.POSITION?this.getScrollTop():0;return this.$offsets=[],this.$targets=[],this.$scrollHeight=this.getScrollHeight(),n.i(c.q)(this.$selector,this.$el).map(function(e){return n.i(c.d)(e,\"href\")}).filter(function(e){return g.test(e||\"\")}).map(function(e){var i=n.i(c.a)(e,t);return n.i(c.f)(i)?{offset:parseInt(o(i).top,10)+s,target:e}:null}).filter(function(e){return e}).sort(function(e,t){return e.offset-t.offset}).reduce(function(t,n){return t[n.target]||(e.$offsets.push(n.offset),e.$targets.push(n.target),t[n.target]=!0),t},{}),this}}},{key:\"process\",value:function(){var e=this.getScrollTop()+this.$config.offset,t=this.getScrollHeight(),n=this.$config.offset+t-this.getOffsetHeight();if(this.$scrollHeight!==t&&this.refresh(),e>=n){var i=this.$targets[this.$targets.length-1];return void(this.$activeTarget!==i&&this.activate(i))}if(this.$activeTarget&&e<this.$offsets[0]&&this.$offsets[0]>0)return this.$activeTarget=null,void this.clear();for(var r=this.$offsets.length;r--;){this.$activeTarget!==this.$targets[r]&&e>=this.$offsets[r]&&(void 0===this.$offsets[r+1]||e<this.$offsets[r+1])&&this.activate(this.$targets[r])}}},{key:\"getScroller\",value:function(){if(this.$scroller)return this.$scroller;var e=this.$config.element;return e?(n.i(c.n)(e.$el)?e=e.$el:\"string\"==typeof e&&(e=n.i(c.a)(e)),e?(this.$scroller=\"BODY\"===e.tagName?window:e,this.$scroller):null):null}},{key:\"getScrollTop\",value:function(){var e=this.getScroller();return e===window?e.pageYOffset:e.scrollTop}},{key:\"getScrollHeight\",value:function(){return this.getScroller().scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}},{key:\"getOffsetHeight\",value:function(){var e=this.getScroller();return e===window?window.innerHeight:n.i(c.r)(e).height}},{key:\"activate\",value:function(e){var t=this;this.$activeTarget=e,this.clear();var i=n.i(c.q)(this.$selector.split(\",\").map(function(t){return t+'[href=\"'+e+'\"]'}).join(\",\"),this.$el);i.forEach(function(e){if(n.i(c.e)(e,f.DROPDOWN_ITEM)){var i=n.i(c.j)(p.DROPDOWN,e);i&&t.setActiveState(n.i(c.a)(p.DROPDOWN_TOGGLE,i),!0),t.setActiveState(e,!0)}else{t.setActiveState(e,!0),n.i(c.s)(e.parentElement,p.NAV_ITEMS)&&t.setActiveState(e.parentElement,!0);for(var r=e;r;){r=n.i(c.j)(p.NAV_LIST_GROUP,r);var o=r?r.previousElementSibling:null;n.i(c.s)(o,p.NAV_LINKS+\", \"+p.LIST_ITEMS)&&t.setActiveState(o,!0),n.i(c.s)(o,p.NAV_ITEMS)&&(t.setActiveState(n.i(c.a)(p.NAV_LINKS,o),!0),t.setActiveState(o,!0))}}}),i&&i.length>0&&this.$root&&this.$root.$emit(\"bv::scrollspy::activate\",e,i)}},{key:\"clear\",value:function(){var e=this;n.i(c.q)(this.$selector+\", \"+p.NAV_ITEMS,this.$el).filter(function(e){return n.i(c.e)(e,f.ACTIVE)}).forEach(function(t){return e.setActiveState(t,!1)})}},{key:\"setActiveState\",value:function(e,t){e&&(t?n.i(c.b)(e,f.ACTIVE):n.i(c.c)(e,f.ACTIVE))}}],[{key:\"Name\",get:function(){return\"v-b-scrollspy\"}},{key:\"Default\",get:function(){return h}},{key:\"DefaultType\",get:function(){return d}}]),e}();t.a=y},uM87:function(e,t,n){\"use strict\";var i=n(\"Kz7p\"),r=n(\"tgmf\"),o=[\".btn:not(.disabled):not([disabled]):not(.dropdown-item)\",\".form-control:not(.disabled):not([disabled])\",\"select:not(.disabled):not([disabled])\",'input[type=\"checkbox\"]:not(.disabled)','input[type=\"radio\"]:not(.disabled)'].join(\",\");t.a={render:function(e){var t=this;return e(\"div\",{class:t.classObject,attrs:{role:\"toolbar\",tabindex:t.keyNav?\"0\":null},on:{focusin:t.onFocusin,keydown:t.onKeydown}},[t.$slots.default])},computed:{classObject:function(){return[\"btn-toolbar\",this.justify&&!this.vertical?\"justify-content-between\":\"\"]}},props:{justify:{type:Boolean,default:!1},keyNav:{type:Boolean,default:!1}},methods:{onFocusin:function(e){e.target===this.$el&&(e.preventDefault(),e.stopPropagation(),this.focusFirst(e))},onKeydown:function(e){if(this.keyNav){var t=e.keyCode,n=e.shiftKey;t===r.a.UP||t===r.a.LEFT?(e.preventDefault(),e.stopPropagation(),n?this.focusFirst(e):this.focusNext(e,!0)):t!==r.a.DOWN&&t!==r.a.RIGHT||(e.preventDefault(),e.stopPropagation(),n?this.focusLast(e):this.focusNext(e,!1))}},setItemFocus:function(e){this.$nextTick(function(){e.focus()})},focusNext:function(e,t){var n=this.getItems();if(!(n.length<1)){var i=n.indexOf(e.target);t&&i>0?i--:!t&&i<n.length-1&&i++,i<0&&(i=0),this.setItemFocus(n[i])}},focusFirst:function(e){var t=this.getItems();t.length>0&&this.setItemFocus(t[0])},focusLast:function(e){var t=this.getItems();t.length>0&&this.setItemFocus([t.length-1])},getItems:function(){var e=n.i(i.q)(o,this.$el);return e.forEach(function(e){e.tabIndex=-1}),e.filter(function(e){return n.i(i.f)(e)})}},mounted:function(){this.keyNav&&this.getItems()}}},v2Bs:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i,r,o=\" \",s=e.level,a=e.dataLevel,l=e.schema[t],c=e.errSchemaPath+\"/\"+t,u=!e.opts.allErrors,h=\"data\"+(a||\"\"),d=\"valid\"+s;if(\"#\"==l||\"#/\"==l)e.isRoot?(i=e.async,r=\"validate\"):(i=!0===e.root.schema.$async,r=\"root.refVal[0]\");else{var f=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===f){var p=e.MissingRefError.message(e.baseId,l);if(\"fail\"==e.opts.missingRefs){e.logger.error(p);var m=m||[];m.push(o),o=\"\",!1!==e.createErrors?(o+=\" { keyword: '$ref' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(c)+\" , params: { ref: '\"+e.util.escapeQuotes(l)+\"' } \",!1!==e.opts.messages&&(o+=\" , message: 'can\\\\'t resolve reference \"+e.util.escapeQuotes(l)+\"' \"),e.opts.verbose&&(o+=\" , schema: \"+e.util.toQuotedString(l)+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+h+\" \"),o+=\" } \"):o+=\" {} \";var g=o;o=m.pop(),!e.compositeRule&&u?e.async?o+=\" throw new ValidationError([\"+g+\"]); \":o+=\" validate.errors = [\"+g+\"]; return false; \":o+=\" var err = \"+g+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",u&&(o+=\" if (false) { \")}else{if(\"ignore\"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,l,p);e.logger.warn(p),u&&(o+=\" if (true) { \")}}else if(f.inline){var v=e.util.copy(e);v.level++;var y=\"valid\"+v.level;v.schema=f.schema,v.schemaPath=\"\",v.errSchemaPath=l;var b=e.validate(v).replace(/validate\\.schema/g,f.code);o+=\" \"+b+\" \",u&&(o+=\" if (\"+y+\") { \")}else i=!0===f.$async,r=f.code}if(r){var m=m||[];m.push(o),o=\"\",e.opts.passContext?o+=\" \"+r+\".call(this, \":o+=\" \"+r+\"( \",o+=\" \"+h+\", (dataPath || '')\",'\"\"'!=e.errorPath&&(o+=\" + \"+e.errorPath);o+=\" , \"+(a?\"data\"+(a-1||\"\"):\"parentData\")+\" , \"+(a?e.dataPathArr[a]:\"parentDataProperty\")+\", rootData)  \";var w=o;if(o=m.pop(),i){if(!e.async)throw new Error(\"async schema referenced by sync schema\");u&&(o+=\" var \"+d+\"; \"),o+=\" try { \"+e.yieldAwait+\" \"+w+\"; \",u&&(o+=\" \"+d+\" = true; \"),o+=\" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; \",u&&(o+=\" \"+d+\" = false; \"),o+=\" } \",u&&(o+=\" if (\"+d+\") { \")}else o+=\" if (!\"+w+\") { if (vErrors === null) vErrors = \"+r+\".errors; else vErrors = vErrors.concat(\"+r+\".errors); errors = vErrors.length; } \",u&&(o+=\" else { \")}return o}},\"vFc/\":function(e,t,n){var i=n(\"TcQ7\"),r=n(\"QRG4\"),o=n(\"fkB2\");e.exports=function(e){return function(t,n,s){var a,l=i(t),c=r(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}}},vd6y:function(e,t,n){\"use strict\";t.a={data:function(){return{localChecked:this.checked,hasFocus:!1}},model:{prop:\"checked\",event:\"input\"},props:{value:{},checked:{},buttonVariant:{type:String,default:null}},computed:{computedLocalChecked:{get:function(){return this.is_Child?this.$parent.localChecked:this.localChecked},set:function(e){this.is_Child?this.$parent.localChecked=e:this.localChecked=e}},is_Child:function(){return Boolean(this.$parent&&this.$parent.is_RadioCheckGroup)},is_Disabled:function(){return Boolean(this.is_Child?this.$parent.disabled||this.disabled:this.disabled)},is_Required:function(){return Boolean(this.is_Child?this.$parent.required:this.required)},is_Plain:function(){return Boolean(this.is_Child?this.$parent.plain:this.plain)},is_Custom:function(){return!this.is_Plain},get_Size:function(){return this.is_Child?this.$parent.size:this.size},get_State:function(){return this.is_Child&&\"boolean\"==typeof this.$parent.get_State?this.$parent.get_State:this.computedState},get_StateClass:function(){return\"boolean\"==typeof this.get_State?this.get_State?\"is-valid\":\"is-invalid\":\"\"},is_Stacked:function(){return Boolean(this.is_Child&&this.$parent.stacked)},is_Inline:function(){return!this.is_Stacked},is_ButtonMode:function(){return Boolean(this.is_Child&&this.$parent.buttons)},get_ButtonVariant:function(){return this.buttonVariant||(this.is_Child?this.$parent.buttonVariant:null)||\"secondary\"},get_Name:function(){return(this.is_Child?this.$parent.name||this.$parent.safeId():this.name)||null},buttonClasses:function(){return[\"btn\",\"btn-\"+this.get_ButtonVariant,this.get_Size?\"btn-\"+this.get_Size:\"\",this.is_Disabled?\"disabled\":\"\",this.is_Checked?\"active\":\"\",this.hasFocus?\"focus\":\"\"]}},methods:{handleFocus:function(e){this.is_ButtonMode&&e.target&&(\"focus\"===e.type?this.hasFocus=!0:\"blur\"===e.type&&(this.hasFocus=!1))}}}},vlc0:function(e,t,n){var i;if(window.ace)i=window.ace;else try{i=n(\"kX7f\"),n(\"NbQv\"),n(\"MSRa\")}catch(e){}e.exports=i},vxJQ:function(e,t,n){\"use strict\";n.d(t,\"b\",function(){return o});var i=n(\"2PZM\"),r=n(\"8mh2\"),o=function(e){return{id:{type:String,default:null},tag:{type:String,default:\"div\"},append:{type:Boolean,default:e},isText:{type:Boolean,default:!1}}};t.a={functional:!0,props:o(!1),render:function(e,t){var o=t.props,s=t.data,a=t.children;return e(o.tag,n.i(i.a)(s,{staticClass:\"input-group-\"+(o.append?\"append\":\"prepend\"),attrs:{id:o.id}}),o.isText?[e(r.a,a)]:a)}}},\"w+xg\":function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r=n(\"7C8l\"),o={tag:{type:String,default:\"ul\"},fill:{type:Boolean,default:!1},justified:{type:Boolean,default:!1},tabs:{type:Boolean,default:!1},pills:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},isNavBar:{type:Boolean,default:!1}};t.a={functional:!0,props:o,render:function(e,t){var o=t.props,s=t.data,a=t.children;return o.isNavBar&&n.i(r.a)(\"b-nav: Prop 'is-nav-bar' is deprecated. Please use component '<b-navbar-nav>' instead.\"),e(o.tag,n.i(i.a)(s,{class:{nav:!o.isNavBar,\"navbar-nav\":o.isNavBar,\"nav-tabs\":o.tabs&&!o.isNavBar,\"nav-pills\":o.pills&&!o.isNavBar,\"flex-column\":o.vertical&&!o.isNavBar,\"nav-fill\":o.fill,\"nav-justified\":o.justified}}),a)}}},wKyt:function(e,t,n){\"use strict\";e.exports=function(e,t,n){var i=\" \",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),h=\"errs__\"+r,d=e.util.copy(e);d.level++;var f=\"valid\"+d.level;if(e.util.schemaHasRules(s,e.RULES.all)){d.schema=s,d.schemaPath=a,d.errSchemaPath=l,i+=\" var \"+h+\" = errors;  \";var p=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.createErrors=!1;var m;d.opts.allErrors&&(m=d.opts.allErrors,d.opts.allErrors=!1),i+=\" \"+e.validate(d)+\" \",d.createErrors=!0,m&&(d.opts.allErrors=m),e.compositeRule=d.compositeRule=p,i+=\" if (\"+f+\") {   \";var g=g||[];g.push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'not' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: {} \",!1!==e.opts.messages&&(i+=\" , message: 'should NOT be valid' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";var v=i;i=g.pop(),!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+v+\"]); \":i+=\" validate.errors = [\"+v+\"]; return false; \":i+=\" var err = \"+v+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",i+=\" } else {  errors = \"+h+\"; if (vErrors !== null) { if (\"+h+\") vErrors.length = \"+h+\"; else vErrors = null; } \",e.opts.allErrors&&(i+=\" } \")}else i+=\"  var err =   \",!1!==e.createErrors?(i+=\" { keyword: 'not' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: {} \",!1!==e.opts.messages&&(i+=\" , message: 'should NOT be valid' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+a+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \",i+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",c&&(i+=\" if (false) { \");return i}},wen1:function(e,t,n){\"use strict\";function i(e){return e&&\"[object Object]\"==={}.toString.call(e)}var r=n(\"GnGf\"),o=n(\"/CDJ\");t.a={props:{options:{type:[Array,Object],default:function(){return[]}},valueField:{type:String,default:\"value\"},textField:{type:String,default:\"text\"},disabledField:{type:String,default:\"disabled\"}},computed:{formOptions:function(){var e=this.options||[],t=this.valueField||\"value\",s=this.textField||\"text\",a=this.disabledField||\"disabled\";return n.i(r.b)(e)?e.map(function(e){return i(e)?{value:e[t],text:String(e[s]),disabled:e[a]||!1}:{text:String(e),value:e,disabled:!1}}):i(e)?n.i(o.b)(e).map(function(n){var r=e[n]||{};if(i(r)){var o=r[t],l=r[s];return{text:void 0===l?n:String(l),value:void 0===o?n:o,disabled:r[a]||!1}}return{text:String(r),value:n,disabled:!1}}):[]}}}},woOf:function(e,t,n){e.exports={default:n(\"V3tA\"),__esModule:!0}},x7Qz:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={id:{type:String,default:null},tag:{type:String,default:\"div\"},forceShow:{type:Boolean,default:!1}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.children;return e(r.tag,n.i(i.a)(o,{staticClass:\"valid-feedback\",class:{\"d-block\":r.forceShow},attrs:{id:r.id}}),s)}}},xGBE:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r=n(\"etPs\"),o=n.i(r.c)();t.a={functional:!0,props:o,render:function(e,t){var o=t.props,s=t.data,a=t.children;return e(\"li\",n.i(i.a)(s,{staticClass:\"nav-item\"}),[e(r.b,{staticClass:\"nav-link\",props:o},a)])}}},xUiR:function(e,t,n){\"use strict\";var i=n(\"z1dD\"),r=n(\"q21c\"),o={bFormTextarea:i.a,bTextarea:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},xaZU:function(e,t,n){\"use strict\";function i(e,t){if(e.map)return e.map(t);for(var n=[],i=0;i<e.length;i++)n.push(t(e[i],i));return n}var r=function(e){switch(typeof e){case\"string\":return e;case\"boolean\":return e?\"true\":\"false\";case\"number\":return isFinite(e)?e:\"\";default:return\"\"}};e.exports=function(e,t,n,a){return t=t||\"&\",n=n||\"=\",null===e&&(e=void 0),\"object\"==typeof e?i(s(e),function(s){var a=encodeURIComponent(r(s))+n;return o(e[s])?i(e[s],function(e){return a+encodeURIComponent(r(e))}).join(t):a+encodeURIComponent(r(e[s]))}).join(t):a?encodeURIComponent(r(a))+n+encodeURIComponent(r(e)):\"\"};var o=Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},s=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},xmlx:function(e,t,n){\"use strict\";function i(e){r.copy(e,this)}var r=n(\"AM9w\");e.exports=i},xnc9:function(e,t){e.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},y2ie:function(e,t,n){\"use strict\";function i(e,t,n,i){for(var o={code:{text:\"Code\",title:\"Switch to code highlighter\",click:function(){i(\"code\")}},form:{text:\"Form\",title:\"Switch to form editor\",click:function(){i(\"form\")}},text:{text:\"Text\",title:\"Switch to plain text editor\",click:function(){i(\"text\")}},tree:{text:\"Tree\",title:\"Switch to tree editor\",click:function(){i(\"tree\")}},view:{text:\"View\",title:\"Switch to tree view\",click:function(){i(\"view\")}}},s=[],a=0;a<t.length;a++){var l=t[a],c=o[l];if(!c)throw new Error('Unknown mode \"'+l+'\"');c.className=\"jsoneditor-type-modes\"+(n==l?\" jsoneditor-selected\":\"\"),s.push(c)}var u=o[n];if(!u)throw new Error('Unknown mode \"'+n+'\"');var h=u.text,d=document.createElement(\"button\");d.type=\"button\",d.className=\"jsoneditor-modes jsoneditor-separator\",d.innerHTML=h+\" &#x25BE;\",d.title=\"Switch editor mode\",d.onclick=function(){new r(s).show(d)};var f=document.createElement(\"div\");f.className=\"jsoneditor-modes\",f.style.position=\"relative\",f.appendChild(d),e.appendChild(f),this.dom={container:e,box:d,frame:f}}var r=n(\"pk12\");i.prototype.focus=function(){this.dom.box.focus()},i.prototype.destroy=function(){this.dom&&this.dom.frame&&this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom=null},e.exports=i},y47G:function(e,t,n){\"use strict\";var i=n(\"XHeZ\"),r=n(\"Mjd8\"),o=n(\"V2Be\"),s=n(\"pk8h\"),a=n(\"Lzqu\"),l=n(\"q21c\"),c={bDropdown:i.a,bDd:i.a,bDropdownItem:r.a,bDdItem:r.a,bDropdownItemButton:o.a,bDropdownItemBtn:o.a,bDdItemButton:o.a,bDdItemBtn:o.a,bDropdownHeader:s.a,bDdHeader:s.a,bDropdownDivider:a.a,bDdDivider:a.a},u={install:function(e){n.i(l.c)(e,c)}};n.i(l.a)(u),t.a=u},yA1N:function(e,t,n){\"use strict\";function i(e){var t={};return e.arg&&(t.element=\"#\"+e.arg),n.i(a.b)(e.modifiers).forEach(function(e){/^\\d+$/.test(e)?t.offset=parseInt(e,10):/^(auto|position|offset)$/.test(e)&&(t.method=e)}),\"string\"==typeof e.value?t.element=e.value:\"number\"==typeof e.value?t.offset=Math.round(e.value):\"object\"===l(e.value)&&n.i(a.b)(e.value).filter(function(e){return Boolean(s.a.DefaultType[e])}).forEach(function(n){t[n]=e.value[n]}),t}function r(e,t,n){if(!u){var r=i(t);return e[h]?e[h].updateConfig(r,n.context.$root):e[h]=new s.a(e,r,n.context.$root),e[h]}}function o(e){e[h]&&(e[h].dispose(),e[h]=null)}var s=n(\"to/m\"),a=n(\"/CDJ\"),l=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"undefined\"!=typeof window,u=!c,h=\"__BV_ScrollSpy__\";t.a={bind:function(e,t,n){r(e,t,n)},inserted:function(e,t,n){r(e,t,n)},update:function(e,t,n){r(e,t,n)},componentUpdated:function(e,t,n){r(e,t,n)},unbind:function(e){u||o(e)}}},yCm2:function(e,t,n){\"use strict\";var i=n(\"2PZM\"),r={tag:{type:String,default:\"div\"}};t.a={functional:!0,props:r,render:function(e,t){var r=t.props,o=t.data,s=t.children;return e(r.tag,n.i(i.a)(o,{staticClass:\"form-row\"}),s)}}},yKl8:function(e,t,n){\"use strict\";var i=n(\"3+B3\"),r=n(\"q21c\"),o={bFormSelect:i.a,bSelect:i.a},s={install:function(e){n.i(r.c)(e,o)}};n.i(r.a)(s),t.a=s},yTKe:function(e,t,n){\"use strict\";var i=n(\"UePd\"),r=n(\"n9qK\"),o=n(\"q21c\"),s={bCollapse:i.a},a={install:function(e){n.i(o.c)(e,s),e.use(r.a)}};n.i(o.a)(a),t.a=a},ylhW:function(e,t,n){\"use strict\";var i=n(\"m9fp\"),r=n(\"VQrr\"),o=n(\"q21c\"),s={bCarousel:i.a,bCarouselSlide:r.a},a={install:function(e){n.i(o.c)(e,s)}};n.i(o.a)(a),t.a=a},z1dD:function(e,t,n){\"use strict\";var i=n(\"OfYj\"),r=n(\"/gqF\"),o=n(\"60E9\"),s=n(\"TMTb\");t.a={mixins:[i.a,r.a,o.a,s.a],render:function(e){var t=this;return e(\"textarea\",{ref:\"input\",class:t.inputClass,style:t.inputStyle,directives:[{name:\"model\",rawName:\"v-model\",value:t.localValue,expression:\"localValue\"}],domProps:{value:t.value},attrs:{id:t.safeId(),name:t.name,disabled:t.disabled,placeholder:t.placeholder,required:t.required,autocomplete:t.autocomplete||null,readonly:t.readonly||t.plaintext,rows:t.rowsCount,wrap:t.wrap||null,\"aria-required\":t.required?\"true\":null,\"aria-invalid\":t.computedAriaInvalid},on:{input:function(e){t.localValue=e.target.value}}})},data:function(){return{localValue:this.value}},props:{value:{type:String,default:\"\"},ariaInvalid:{type:[Boolean,String],default:!1},readonly:{type:Boolean,default:!1},plaintext:{type:Boolean,default:!1},autocomplete:{type:String,default:null},placeholder:{type:String,default:null},rows:{type:[Number,String],default:null},maxRows:{type:[Number,String],default:null},wrap:{type:String,default:\"soft\"},noResize:{type:Boolean,default:!1}},computed:{rowsCount:function(){var e=parseInt(this.rows,10)||1,t=parseInt(this.maxRows,10)||0,n=(this.localValue||\"\").toString().split(\"\\n\").length;return t?Math.min(t,Math.max(e,n)):Math.max(e,n)},inputClass:function(){return[this.plaintext?\"form-control-plaintext\":\"form-control\",this.sizeFormClass,this.stateClass]},inputStyle:function(){return{width:this.plaintext?\"100%\":null,resize:this.noResize?\"none\":null}},computedAriaInvalid:function(){return this.ariaInvalid&&\"false\"!==this.ariaInvalid?!0===this.ariaInvalid?\"true\":this.ariaInvalid:!1===this.computedState?\"true\":null}},watch:{value:function(e,t){e!==t&&(this.localValue=e)},localValue:function(e,t){e!==t&&this.$emit(\"input\",e)}},methods:{focus:function(){this.disabled||this.$el.focus()}}}},zfKA:function(e,t,n){\"use strict\";var i=n(\"/CDJ\"),r=n(\"FekY\"),o=n(\"etPs\"),s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},a=n.i(o.a)(\"activeClass\",\"exactActiveClass\",\"append\",\"exact\",\"replace\",\"target\",\"rel\"),l=n.i(i.a)({numberOfPages:{type:Number,default:1},baseUrl:{type:String,default:\"/\"},useRouter:{type:Boolean,default:!1},linkGen:{type:Function,default:null},pageGen:{type:Function,default:null}},a);t.a={mixins:[r.a],props:l,computed:{isNav:function(){return!0}},methods:{onClick:function(e,t){this.currentPage=e},makePage:function(e){return this.pageGen&&\"function\"==typeof this.pageGen?this.pageGen(e):e},makeLink:function(e){if(this.linkGen&&\"function\"==typeof this.linkGen)return this.linkGen(e);var t=\"\"+this.baseUrl+e;return this.useRouter?{path:t}:t},linkProps:function(e){var t=this.makeLink(e),r={href:\"string\"==typeof t?t:void 0,target:this.target||null,rel:this.rel||null,disabled:this.disabled};return(this.useRouter||\"object\"===(void 0===t?\"undefined\":s(t)))&&(r=n.i(i.a)(r,{to:t,exact:this.exact,activeClass:this.activeClass,exactActiveClass:this.exactActiveClass,append:this.append,replace:this.replace})),r}}}}});\n//# sourceMappingURL=vendor.8940c3c560d73d0a0b28.js.map"
  },
  {
    "path": "tac-console/src/main/resources/static/main.css",
    "content": ".spanButton {\n    margin-left: 10px;\n}\n"
  },
  {
    "path": "tac-console/src/main/resources/tac-console.properties",
    "content": "\n\n"
  },
  {
    "path": "tac-console/src/main/resources/templates/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"utf-8\">\n    <title>tac-console-web</title>\n    <link href=\"/static/css/app.797406e2fb84b15ea0b383ad60572f28.css\" rel=\"stylesheet\">\n</head>\n<body>\n<div id=\"app\"></div>\n<script type=\"text/javascript\" src=\"/static/js/manifest.58ce01f7a6fd036b4f8d.js\"></script>\n<script type=\"text/javascript\" src=\"/static/js/vendor.8940c3c560d73d0a0b28.js\"></script>\n<script type=\"text/javascript\" src=\"/static/js/app.606b53e74ca0c7067159.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "tac-console/src/test/java/com/alibaba/tac/console/MenuOptionHandlerTest.java",
    "content": "package com.alibaba.tac.console;\n\nimport com.alibaba.tac.console.sdk.MenuOptionHandler;\nimport com.alibaba.tac.console.test.TacConsoleTest;\n\nimport javax.annotation.Resource;\n\nimport java.util.concurrent.CountDownLatch;\n\n/**\n * @author jinshuan.li 28/02/2018 15:20\n */\npublic class MenuOptionHandlerTest extends TacConsoleTest {\n\n    @Resource\n    private MenuOptionHandler menuOptionHandler;\n\n    private CountDownLatch countDownLatch=new CountDownLatch(1);\n\n\n}"
  },
  {
    "path": "tac-console/src/test/java/com/alibaba/tac/console/test/LancherTest.java",
    "content": "package com.alibaba.tac.console.test;\n\nimport com.alibaba.tac.engine.bootlaucher.BootJarLaucherUtils;\nimport org.junit.Test;\nimport org.springframework.boot.loader.archive.Archive;\nimport org.springframework.boot.loader.archive.ExplodedArchive;\nimport org.springframework.boot.loader.archive.JarFileArchive;\nimport org.springframework.boot.loader.data.RandomAccessData;\nimport org.springframework.boot.loader.jar.JarFile;\n\nimport java.io.*;\nimport java.net.URI;\nimport java.security.CodeSource;\nimport java.security.ProtectionDomain;\nimport java.util.ArrayList;\nimport java.util.Enumeration;\nimport java.util.List;\nimport java.util.UUID;\nimport java.util.jar.JarEntry;\n\n/**\n * @author jinshuan.li 08/03/2018 17:58\n */\npublic class LancherTest {\n\n    private static final int BUFFER_SIZE = 32 * 1024;\n\n    private JarFileArchive archive;\n\n    private JarFile jarFile;\n\n    static final String BOOT_INF_CLASSES = \"BOOT-INF/classes/\";\n\n    static final String BOOT_INF_LIB = \"BOOT-INF/lib/\";\n\n    private File tempUnpackFolder;\n\n    String file=\"/Users/jinshuan.li/Source/open-tac/tac-console/target/tac-console-0.0.1-SNAPSHOT.jar\";\n\n    @Test\n    public void test() throws IOException {\n\n\n        JarFileArchive jarFileArchive=new JarFileArchive(new File(file));\n        this.jarFile = new JarFile(new File(file));\n        this.archive=jarFileArchive;\n        List<Archive> archives = new ArrayList<Archive>(\n            this.archive.getNestedArchives(new Archive.EntryFilter() {\n\n                @Override\n                public boolean matches(Archive.Entry entry) {\n                    return isNestedArchive(entry);\n                }\n\n            }));\n\n        for (Archive entries : archives) {\n            JarFileArchive archive=(JarFileArchive)entries;\n\n        }\n\n\n    }\n\n    @Test\n    public void test1() throws IOException {\n\n\n\n        this.jarFile=new JarFile(new File(file));\n\n        Enumeration<JarEntry> entries = this.jarFile.entries();\n        while (entries.hasMoreElements()){\n\n            JarEntry jarEntry = entries.nextElement();\n            if (jarEntry.getName().contains(\".jar\")){\n                getUnpackedNestedArchive(jarEntry);\n            }\n            System.out.println(jarEntry);\n        }\n    }\n\n    @Test\n    public void test3() throws Exception {\n\n        BootJarLaucherUtils.unpackBootLibs(new JarFile(new File(file)));\n    }\n    protected final Archive createArchive() throws Exception {\n        ProtectionDomain protectionDomain = getClass().getProtectionDomain();\n        CodeSource codeSource = protectionDomain.getCodeSource();\n        URI location = (codeSource == null ? null : codeSource.getLocation().toURI());\n        String path = (location == null ? null : location.getSchemeSpecificPart());\n        if (path == null) {\n            throw new IllegalStateException(\"Unable to determine code source archive\");\n        }\n        File root = new File(path);\n        if (!root.exists()) {\n            throw new IllegalStateException(\n                \"Unable to determine code source archive from \" + root);\n        }\n        return (root.isDirectory() ? new ExplodedArchive(root)\n            : new JarFileArchive(root));\n    }\n\n    protected boolean isNestedArchive(Archive.Entry entry) {\n        System.out.println(entry.getName());\n        if (entry.isDirectory()) {\n            return entry.getName().equals(BOOT_INF_CLASSES);\n        }\n        return entry.getName().startsWith(BOOT_INF_LIB);\n    }\n\n    private Archive getUnpackedNestedArchive(JarEntry jarEntry) throws IOException {\n        String name = jarEntry.getName();\n        if (name.lastIndexOf(\"/\") != -1) {\n            name = name.substring(name.lastIndexOf(\"/\") + 1);\n        }\n        File file = new File(getTempUnpackFolder(), name);\n        if (!file.exists() || file.length() != jarEntry.getSize()) {\n            unpack(jarEntry, file);\n        }\n        return new JarFileArchive(file, file.toURI().toURL());\n    }\n    private File getTempUnpackFolder() {\n        if (this.tempUnpackFolder == null) {\n            File tempFolder = new File(System.getProperty(\"java.io.tmpdir\"));\n            this.tempUnpackFolder = createUnpackFolder(tempFolder);\n        }\n        return this.tempUnpackFolder;\n    }\n\n    private File createUnpackFolder(File parent) {\n        int attempts = 0;\n        while (attempts++ < 1000) {\n            String fileName = new File(this.jarFile.getName()).getName();\n            File unpackFolder = new File(parent,\n                fileName + \"-spring-boot-libs-\" + UUID.randomUUID());\n            if (unpackFolder.mkdirs()) {\n                return unpackFolder;\n            }\n        }\n        throw new IllegalStateException(\n            \"Failed to create unpack folder in directory '\" + parent + \"'\");\n    }\n\n    private void unpack(JarEntry entry, File file) throws IOException {\n        InputStream inputStream = this.jarFile.getInputStream(entry, RandomAccessData.ResourceAccess.ONCE);\n        try {\n            OutputStream outputStream = new FileOutputStream(file);\n            try {\n                byte[] buffer = new byte[BUFFER_SIZE];\n                int bytesRead = -1;\n                while ((bytesRead = inputStream.read(buffer)) != -1) {\n                    outputStream.write(buffer, 0, bytesRead);\n                }\n                outputStream.flush();\n            }\n            finally {\n                outputStream.close();\n            }\n        }\n        finally {\n            inputStream.close();\n        }\n    }\n\n}\n"
  },
  {
    "path": "tac-console/src/test/java/com/alibaba/tac/console/test/TacConsoleTest.java",
    "content": "package com.alibaba.tac.console.test;\n\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringRunner;\n\n/**\n * @author jinshuan.li 26/02/2018 11:36\n */\n@RunWith(SpringRunner.class)\n@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.NONE)\npublic class TacConsoleTest {\n}\n"
  },
  {
    "path": "tac-console/src/test/java/com/alibaba/tac/console/test/TestApplication.java",
    "content": "package com.alibaba.tac.console.test;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.context.annotation.PropertySource;\nimport org.springframework.context.annotation.PropertySources;\n\n/**\n * @author jinshuan.li 12/02/2018 09:26\n */\n@SpringBootApplication(scanBasePackages = {\"com.alibaba.tac\"})\n//@PropertySources({@PropertySource(\"classpath:test.properties\")})\npublic class TestApplication {\n}\n"
  },
  {
    "path": "tac-console-web/.babelrc",
    "content": "{\n  \"presets\": [\n    [\"env\", {\n      \"modules\": false,\n      \"targets\": {\n        \"browsers\": [\"> 1%\", \"last 2 versions\", \"not ie <= 8\"]\n      }\n    }],\n    \"stage-2\"\n  ],\n  \"plugins\": [\"transform-runtime\"],\n  \"env\": {\n    \"test\": {\n      \"presets\": [\"env\", \"stage-2\"],\n      \"plugins\": [\"istanbul\"]\n    }\n  }\n}\n"
  },
  {
    "path": "tac-console-web/.editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 4\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n"
  },
  {
    "path": "tac-console-web/.eslintignore",
    "content": "build/*.js\nconfig/*.js\n"
  },
  {
    "path": "tac-console-web/.eslintrc.js",
    "content": "// http://eslint.org/docs/user-guide/configuring\n\nmodule.exports = {\n  root: true,\n  parser: 'babel-eslint',\n  parserOptions: {\n    sourceType: 'module'\n  },\n  env: {\n    browser: true,\n  },\n  // required to lint *.vue files\n  plugins: [\n    'html'\n  ],\n  // add your custom rules here\n  'rules': {\n    // allow debugger during development\n    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0\n  }\n}\n"
  },
  {
    "path": "tac-console-web/.gitignore",
    "content": ".DS_Store\nnode_modules/\ndist/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Editor directories and files\n.idea\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n"
  },
  {
    "path": "tac-console-web/.postcssrc.js",
    "content": "// https://github.com/michael-ciniawsky/postcss-load-config\n\nmodule.exports = {\n  \"plugins\": {\n    // to edit target browsers: use \"browserslist\" field in package.json\n    \"autoprefixer\": {}\n  }\n}\n"
  },
  {
    "path": "tac-console-web/README.md",
    "content": "# tac-console-web\n\n> A Vue.js project\n\n## Build Setup\n\n``` bash\n# install dependencies\nnpm install\n\n# serve with hot reload at localhost:8080\nnpm run dev\n\n# build for production with minification\nnpm run build\n\n# build for production and view the bundle analyzer report\nnpm run build --report\n```\n\nFor detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).\n"
  },
  {
    "path": "tac-console-web/build/build.js",
    "content": "require('./check-versions')()\n\nprocess.env.NODE_ENV = 'production'\n\nvar ora = require('ora')\nvar rm = require('rimraf')\nvar path = require('path')\nvar chalk = require('chalk')\nvar webpack = require('webpack')\nvar config = require('../config')\nvar webpackConfig = require('./webpack.prod.conf')\n\nvar spinner = ora('building for production...')\nspinner.start()\n\nrm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {\n  if (err) throw err\n  webpack(webpackConfig, function (err, stats) {\n    spinner.stop()\n    if (err) throw err\n    process.stdout.write(stats.toString({\n      colors: true,\n      modules: false,\n      children: false,\n      chunks: false,\n      chunkModules: false\n    }) + '\\n\\n')\n\n    if (stats.hasErrors()) {\n      console.log(chalk.red('  Build failed with errors.\\n'))\n      process.exit(1)\n    }\n\n    console.log(chalk.cyan('  Build complete.\\n'))\n    console.log(chalk.yellow(\n      '  Tip: built files are meant to be served over an HTTP server.\\n' +\n      '  Opening index.html over file:// won\\'t work.\\n'\n    ))\n  })\n})\n"
  },
  {
    "path": "tac-console-web/build/check-versions.js",
    "content": "var chalk = require('chalk')\nvar semver = require('semver')\nvar packageConfig = require('../package.json')\nvar shell = require('shelljs')\nfunction exec (cmd) {\n  return require('child_process').execSync(cmd).toString().trim()\n}\n\nvar versionRequirements = [\n  {\n    name: 'node',\n    currentVersion: semver.clean(process.version),\n    versionRequirement: packageConfig.engines.node\n  }\n]\n\nif (shell.which('npm')) {\n  versionRequirements.push({\n    name: 'npm',\n    currentVersion: exec('npm --version'),\n    versionRequirement: packageConfig.engines.npm\n  })\n}\n\nmodule.exports = function () {\n  var warnings = []\n  for (var i = 0; i < versionRequirements.length; i++) {\n    var mod = versionRequirements[i]\n    if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {\n      warnings.push(mod.name + ': ' +\n        chalk.red(mod.currentVersion) + ' should be ' +\n        chalk.green(mod.versionRequirement)\n      )\n    }\n  }\n\n  if (warnings.length) {\n    console.log('')\n    console.log(chalk.yellow('To use this template, you must update following to modules:'))\n    console.log()\n    for (var i = 0; i < warnings.length; i++) {\n      var warning = warnings[i]\n      console.log('  ' + warning)\n    }\n    console.log()\n    process.exit(1)\n  }\n}\n"
  },
  {
    "path": "tac-console-web/build/dev-client.js",
    "content": "/* eslint-disable */\nrequire('eventsource-polyfill')\nvar hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')\n\nhotClient.subscribe(function (event) {\n  if (event.action === 'reload') {\n    window.location.reload()\n  }\n})\n"
  },
  {
    "path": "tac-console-web/build/dev-server.js",
    "content": "require('./check-versions')()\n\nvar config = require('../config')\nif (!process.env.NODE_ENV) {\n  process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)\n}\n\nvar opn = require('opn')\nvar path = require('path')\nvar express = require('express')\nvar webpack = require('webpack')\nvar proxyMiddleware = require('http-proxy-middleware')\nvar webpackConfig = require('./webpack.dev.conf')\n\n// default port where dev server listens for incoming traffic\nvar port = process.env.PORT || config.dev.port\n// automatically open browser, if not set will be false\nvar autoOpenBrowser = !!config.dev.autoOpenBrowser\n// Define HTTP proxies to your custom API backend\n// https://github.com/chimurai/http-proxy-middleware\nvar proxyTable = config.dev.proxyTable\n\nvar app = express()\nvar compiler = webpack(webpackConfig)\n\nvar devMiddleware = require('webpack-dev-middleware')(compiler, {\n  publicPath: webpackConfig.output.publicPath,\n  quiet: true\n})\n\nvar hotMiddleware = require('webpack-hot-middleware')(compiler, {\n  log: false,\n  heartbeat: 2000\n})\n// force page reload when html-webpack-plugin template changes\ncompiler.plugin('compilation', function (compilation) {\n  compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {\n    hotMiddleware.publish({ action: 'reload' })\n    cb()\n  })\n})\n\n// proxy api requests\nObject.keys(proxyTable).forEach(function (context) {\n  var options = proxyTable[context]\n  if (typeof options === 'string') {\n    options = { target: options }\n  }\n  app.use(proxyMiddleware(options.filter || context, options))\n})\n\n// handle fallback for HTML5 history API\napp.use(require('connect-history-api-fallback')())\n\n// serve webpack bundle output\napp.use(devMiddleware)\n\n// enable hot-reload and state-preserving\n// compilation error display\napp.use(hotMiddleware)\n\n// serve pure static assets\nvar staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)\napp.use(staticPath, express.static('./static'))\n\nvar uri = 'http://localhost:' + port\n\nvar _resolve\nvar readyPromise = new Promise(resolve => {\n  _resolve = resolve\n})\n\nconsole.log('> Starting dev server...')\ndevMiddleware.waitUntilValid(() => {\n  console.log('> Listening at ' + uri + '\\n')\n  // when env is testing, don't need open it\n  if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {\n    opn(uri)\n  }\n  _resolve()\n})\n\nvar server = app.listen(port)\n\nmodule.exports = {\n  ready: readyPromise,\n  close: () => {\n    server.close()\n  }\n}\n"
  },
  {
    "path": "tac-console-web/build/utils.js",
    "content": "var path = require('path')\nvar config = require('../config')\nvar ExtractTextPlugin = require('extract-text-webpack-plugin')\n\nexports.assetsPath = function (_path) {\n  var assetsSubDirectory = process.env.NODE_ENV === 'production'\n    ? config.build.assetsSubDirectory\n    : config.dev.assetsSubDirectory\n  return path.posix.join(assetsSubDirectory, _path)\n}\n\nexports.cssLoaders = function (options) {\n  options = options || {}\n\n  var cssLoader = {\n    loader: 'css-loader',\n    options: {\n      minimize: process.env.NODE_ENV === 'production',\n      sourceMap: options.sourceMap\n    }\n  }\n\n  // generate loader string to be used with extract text plugin\n  function generateLoaders (loader, loaderOptions) {\n    var loaders = [cssLoader]\n    if (loader) {\n      loaders.push({\n        loader: loader + '-loader',\n        options: Object.assign({}, loaderOptions, {\n          sourceMap: options.sourceMap\n        })\n      })\n    }\n\n    // Extract CSS when that option is specified\n    // (which is the case during production build)\n    if (options.extract) {\n      return ExtractTextPlugin.extract({\n        use: loaders,\n        fallback: 'vue-style-loader'\n      })\n    } else {\n      return ['vue-style-loader'].concat(loaders)\n    }\n  }\n\n  // https://vue-loader.vuejs.org/en/configurations/extract-css.html\n  return {\n    css: generateLoaders(),\n    postcss: generateLoaders(),\n    less: generateLoaders('less'),\n    sass: generateLoaders('sass', { indentedSyntax: true }),\n    scss: generateLoaders('sass'),\n    stylus: generateLoaders('stylus'),\n    styl: generateLoaders('stylus')\n  }\n}\n\n// Generate loaders for standalone style files (outside of .vue)\nexports.styleLoaders = function (options) {\n  var output = []\n  var loaders = exports.cssLoaders(options)\n  for (var extension in loaders) {\n    var loader = loaders[extension]\n    output.push({\n      test: new RegExp('\\\\.' + extension + '$'),\n      use: loader\n    })\n  }\n  return output\n}\n"
  },
  {
    "path": "tac-console-web/build/vue-loader.conf.js",
    "content": "var utils = require('./utils')\nvar config = require('../config')\nvar isProduction = process.env.NODE_ENV === 'production'\n\nmodule.exports = {\n  loaders: utils.cssLoaders({\n    sourceMap: isProduction\n      ? config.build.productionSourceMap\n      : config.dev.cssSourceMap,\n    extract: isProduction\n  }),\n  transformToRequire: {\n    video: 'src',\n    source: 'src',\n    img: 'src',\n    image: 'xlink:href'\n  }\n}\n"
  },
  {
    "path": "tac-console-web/build/webpack.base.conf.js",
    "content": "var path = require('path')\nvar utils = require('./utils')\nvar config = require('../config')\nvar vueLoaderConfig = require('./vue-loader.conf')\n\nfunction resolve (dir) {\n  return path.join(__dirname, '..', dir)\n}\n\nmodule.exports = {\n  entry: {\n    app: './src/main.js'\n  },\n  output: {\n    path: config.build.assetsRoot,\n    filename: '[name].js',\n    publicPath: process.env.NODE_ENV === 'production'\n      ? config.build.assetsPublicPath\n      : config.dev.assetsPublicPath\n  },\n  resolve: {\n    extensions: ['.js', '.vue', '.json'],\n    alias: {\n      'vue$': 'vue/dist/vue.esm.js',\n      '@': resolve('src'),\n    }\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.(js|vue)$/,\n        loader: 'eslint-loader',\n        enforce: 'pre',\n        include: [resolve('src'), resolve('test')],\n        options: {\n          formatter: require('eslint-friendly-formatter')\n        }\n      },\n      {\n        test: /\\.vue$/,\n        loader: 'vue-loader',\n        options: vueLoaderConfig\n      },\n      {\n        test: /\\.js$/,\n        loader: 'babel-loader',\n        include: [resolve('src'), resolve('test')]\n      },\n      {\n        test: /\\.(png|jpe?g|gif|svg)(\\?.*)?$/,\n        loader: 'url-loader',\n        options: {\n          limit: 10000,\n          name: utils.assetsPath('img/[name].[hash:7].[ext]')\n        }\n      },\n      {\n        test: /\\.(mp4|webm|ogg|mp3|wav|flac|aac)(\\?.*)?$/,\n        loader: 'url-loader',\n        options: {\n          limit: 10000,\n          name: utils.assetsPath('media/[name].[hash:7].[ext]')\n        }\n      },\n      {\n        test: /\\.(woff2?|eot|ttf|otf)(\\?.*)?$/,\n        loader: 'url-loader',\n        options: {\n          limit: 10000,\n          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "tac-console-web/build/webpack.dev.conf.js",
    "content": "var utils = require('./utils')\nvar webpack = require('webpack')\nvar config = require('../config')\nvar merge = require('webpack-merge')\nvar baseWebpackConfig = require('./webpack.base.conf')\nvar HtmlWebpackPlugin = require('html-webpack-plugin')\nvar FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')\n\n// add hot-reload related code to entry chunks\nObject.keys(baseWebpackConfig.entry).forEach(function (name) {\n  baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])\n})\n\nmodule.exports = merge(baseWebpackConfig, {\n  module: {\n    rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })\n  },\n  // cheap-module-eval-source-map is faster for development\n  devtool: '#cheap-module-eval-source-map',\n  plugins: [\n    new webpack.DefinePlugin({\n      'process.env': config.dev.env\n    }),\n    // https://github.com/glenjamin/webpack-hot-middleware#installation--usage\n    new webpack.HotModuleReplacementPlugin(),\n    new webpack.NoEmitOnErrorsPlugin(),\n    // https://github.com/ampedandwired/html-webpack-plugin\n    new HtmlWebpackPlugin({\n      filename: 'index.html',\n      template: 'index.html',\n      inject: true\n    }),\n    new FriendlyErrorsPlugin()\n  ]\n})\n"
  },
  {
    "path": "tac-console-web/build/webpack.prod.conf.js",
    "content": "var path = require('path');\nvar utils = require('./utils');\nvar webpack = require('webpack');\nvar config = require('../config');\nvar merge = require('webpack-merge');\nvar baseWebpackConfig = require('./webpack.base.conf');\nvar CopyWebpackPlugin = require('copy-webpack-plugin');\nvar HtmlWebpackPlugin = require('html-webpack-plugin');\nvar ExtractTextPlugin = require('extract-text-webpack-plugin');\nvar OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin');\n\nvar env = config.build.env;\n\nvar webpackConfig = merge(baseWebpackConfig, {\n    module: {\n        rules: utils.styleLoaders({\n            sourceMap: config.build.productionSourceMap,\n            extract: true\n        })\n    },\n    devtool: config.build.productionSourceMap ? '#source-map' : false,\n    output: {\n        path: config.build.assetsRoot,\n        filename: utils.assetsPath('js/[name].[chunkhash].js'),\n        chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')\n    },\n    plugins: [\n        // http://vuejs.github.io/vue-loader/en/workflow/production.html\n        new webpack.DefinePlugin({\n            'process.env': env\n        }),\n        new webpack.optimize.UglifyJsPlugin({\n            compress: {\n                warnings: false\n            },\n            sourceMap: true\n        }),\n        // extract css into its own file\n        new ExtractTextPlugin({\n            filename: utils.assetsPath('css/[name].[contenthash].css')\n        }),\n        // Compress extracted CSS. We are using this plugin so that possible\n        // duplicated CSS from different components can be deduped.\n        new OptimizeCSSPlugin({\n            cssProcessorOptions: {\n                safe: true\n            }\n        }),\n        // generate dist index.html with correct asset hash for caching.\n        // you can customize output by editing /index.html\n        // see https://github.com/ampedandwired/html-webpack-plugin\n        new HtmlWebpackPlugin({\n            filename: config.build.index,\n            template: 'index.html',\n            inject: true,\n            minify: {\n                removeComments: true,\n                collapseWhitespace: true,\n                removeAttributeQuotes: false\n                // more options:\n                // https://github.com/kangax/html-minifier#options-quick-reference\n            },\n            // necessary to consistently work with multiple chunks via CommonsChunkPlugin\n            chunksSortMode: 'dependency'\n        }),\n        // keep module.id stable when vender modules does not change\n        new webpack.HashedModuleIdsPlugin(),\n        // split vendor js into its own file\n        new webpack.optimize.CommonsChunkPlugin({\n            name: 'vendor',\n            minChunks: function(module, count) {\n                // any required modules inside node_modules are extracted to vendor\n                return (\n                    module.resource &&\n                    /\\.js$/.test(module.resource) &&\n                    module.resource.indexOf(\n                        path.join(__dirname, '../node_modules')\n                    ) === 0\n                );\n            }\n        }),\n        // extract webpack runtime and module manifest to its own file in order to\n        // prevent vendor hash from being updated whenever app bundle is updated\n        new webpack.optimize.CommonsChunkPlugin({\n            name: 'manifest',\n            chunks: ['vendor']\n        }),\n        // copy custom static assets\n        new CopyWebpackPlugin([\n            {\n                from: path.resolve(__dirname, '../static'),\n                to: config.build.assetsSubDirectory,\n                ignore: ['.*']\n            }\n        ])\n    ]\n});\n\nif (config.build.productionGzip) {\n    var CompressionWebpackPlugin = require('compression-webpack-plugin');\n\n    webpackConfig.plugins.push(\n        new CompressionWebpackPlugin({\n            asset: '[path].gz[query]',\n            algorithm: 'gzip',\n            test: new RegExp(\n                '\\\\.(' + config.build.productionGzipExtensions.join('|') + ')$'\n            ),\n            threshold: 10240,\n            minRatio: 0.8\n        })\n    );\n}\n\nif (config.build.bundleAnalyzerReport) {\n    var BundleAnalyzerPlugin = require('webpack-bundle-analyzer')\n        .BundleAnalyzerPlugin;\n    webpackConfig.plugins.push(new BundleAnalyzerPlugin());\n}\n\nmodule.exports = webpackConfig;\n"
  },
  {
    "path": "tac-console-web/config/dev.env.js",
    "content": "var merge = require('webpack-merge')\nvar prodEnv = require('./prod.env')\n\nmodule.exports = merge(prodEnv, {\n  NODE_ENV: '\"development\"'\n})\n"
  },
  {
    "path": "tac-console-web/config/index.js",
    "content": "// see http://vuejs-templates.github.io/webpack for documentation.\nvar path = require('path');\n\nmodule.exports = {\n    build: {\n        env: require('./prod.env'),\n        index: path.resolve(__dirname, '../dist/index.html'),\n        assetsRoot: path.resolve(__dirname, '../dist'),\n        assetsSubDirectory: 'static',\n        assetsPublicPath: '/',\n        productionSourceMap: true,\n        // Gzip off by default as many popular static hosts such as\n        // Surge or Netlify already gzip all static assets for you.\n        // Before setting to `true`, make sure to:\n        // npm install --save-dev compression-webpack-plugin\n        productionGzip: false,\n        productionGzipExtensions: ['js', 'css'],\n        // Run the build command with an extra argument to\n        // View the bundle analyzer report after build finishes:\n        // `npm run build --report`\n        // Set to `true` or `false` to always turn it on or off\n        bundleAnalyzerReport: process.env.npm_config_report\n    },\n    dev: {\n        env: require('./dev.env'),\n        port: 8080,\n        autoOpenBrowser: true,\n        assetsSubDirectory: 'static',\n        assetsPublicPath: '/',\n        proxyTable: {\n            '/api': {\n                target: 'http://localhost:7001',\n                changeOrigin: true\n            }\n        },\n        // CSS Sourcemaps off by default because relative paths are \"buggy\"\n        // with this option, according to the CSS-Loader README\n        // (https://github.com/webpack/css-loader#sourcemaps)\n        // In our experience, they generally work as expected,\n        // just be aware of this issue when enabling this option.\n        cssSourceMap: false\n    }\n};\n"
  },
  {
    "path": "tac-console-web/config/prod.env.js",
    "content": "module.exports = {\n  NODE_ENV: '\"production\"'\n}\n"
  },
  {
    "path": "tac-console-web/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n    <meta charset=\"utf-8\">\n    <title>tac-console-web</title>\n</head>\n\n<body>\n    <div id=\"app\"></div>\n    <!-- built files will be auto injected -->\n\n\n\n\n\n\n\n</body>\n\n</html>\n"
  },
  {
    "path": "tac-console-web/package.json",
    "content": "{\n  \"name\": \"tac-console-web\",\n  \"version\": \"1.0.0\",\n  \"description\": \"A Vue.js project\",\n  \"author\": \"jinshuan.li\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"node build/dev-server.js\",\n    \"start\": \"node build/dev-server.js\",\n    \"build\": \"node build/build.js\",\n    \"lint\": \"eslint --ext .js,.vue src\"\n  },\n  \"dependencies\": {\n    \"bootstrap\": \"^4.0.0-beta.2\",\n    \"bootstrap-vue\": \"latest\",\n    \"jquery\": \"^3.3.1\",\n    \"jsoneditor\": \"^5.14.0\",\n    \"popper.js\": \"^1.12.9\",\n    \"vue\": \"^2.5.2\",\n    \"vue-resource\": \"^1.5.0\",\n    \"vue-router\": \"^3.0.1\",\n    \"vue-toastr\": \"^2.0.12\"\n  },\n  \"devDependencies\": {\n    \"autoprefixer\": \"^7.1.2\",\n    \"babel-core\": \"^6.22.1\",\n    \"babel-eslint\": \"^7.1.1\",\n    \"babel-loader\": \"^7.1.1\",\n    \"babel-plugin-transform-runtime\": \"^6.22.0\",\n    \"babel-preset-env\": \"^1.3.2\",\n    \"babel-preset-stage-2\": \"^6.22.0\",\n    \"babel-register\": \"^6.22.0\",\n    \"chalk\": \"^2.0.1\",\n    \"connect-history-api-fallback\": \"^1.3.0\",\n    \"copy-webpack-plugin\": \"^4.0.1\",\n    \"css-loader\": \"^0.28.0\",\n    \"cssnano\": \"^3.10.0\",\n    \"eslint\": \"^3.19.0\",\n    \"eslint-friendly-formatter\": \"^3.0.0\",\n    \"eslint-loader\": \"^1.7.1\",\n    \"eslint-plugin-html\": \"^3.0.0\",\n    \"eventsource-polyfill\": \"^0.9.6\",\n    \"express\": \"^4.14.1\",\n    \"extract-text-webpack-plugin\": \"^2.0.0\",\n    \"file-loader\": \"^0.11.1\",\n    \"friendly-errors-webpack-plugin\": \"^1.1.3\",\n    \"html-webpack-plugin\": \"^2.28.0\",\n    \"http-proxy-middleware\": \"^0.17.3\",\n    \"webpack-bundle-analyzer\": \"^2.2.1\",\n    \"semver\": \"^5.3.0\",\n    \"shelljs\": \"^0.7.6\",\n    \"opn\": \"^5.1.0\",\n    \"optimize-css-assets-webpack-plugin\": \"^2.0.0\",\n    \"ora\": \"^1.2.0\",\n    \"rimraf\": \"^2.6.0\",\n    \"url-loader\": \"^0.5.8\",\n    \"vue-loader\": \"^13.0.4\",\n    \"vue-style-loader\": \"^3.0.1\",\n    \"vue-template-compiler\": \"^2.4.2\",\n    \"webpack\": \"^2.6.1\",\n    \"webpack-dev-middleware\": \"^1.10.0\",\n    \"webpack-hot-middleware\": \"^2.18.0\",\n    \"webpack-merge\": \"^4.1.0\"\n  },\n  \"engines\": {\n    \"node\": \">= 4.0.0\",\n    \"npm\": \">= 3.0.0\"\n  },\n  \"browserslist\": [\n    \"> 1%\",\n    \"last 2 versions\",\n    \"not ie <= 8\"\n  ]\n}\n"
  },
  {
    "path": "tac-console-web/src/App.vue",
    "content": "\n<template>\n    <div id=\"app\">\n        <TacConsole></TacConsole>\n    </div>\n</template>\n\n<script>\nexport default {\n  name: 'app'\n};\n</script>\n\n<style>\n#app {\n  font-family: 'Avenir', Helvetica, Arial, sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  text-align: center;\n  color: #2c3e50;\n}\n</style>\n"
  },
  {
    "path": "tac-console-web/src/components/Hello.vue",
    "content": "<template>\n  <div class=\"hello\">\n    <h1>{{ msg }}</h1>\n    <h2>Essential Links</h2>\n    <ul>\n      <li><a href=\"https://vuejs.org\" target=\"_blank\">Core Docs</a></li>\n      <li><a href=\"https://forum.vuejs.org\" target=\"_blank\">Forum</a></li>\n      <li><a href=\"https://chat.vuejs.org\" target=\"_blank\">Community Chat</a></li>\n      <li><a href=\"https://twitter.com/vuejs\" target=\"_blank\">Twitter</a></li>\n      <br>\n      <li><a href=\"http://vuejs-templates.github.io/webpack/\" target=\"_blank\">Docs for This Template</a></li>\n    </ul>\n    <h2>Ecosystem</h2>\n    <ul>\n      <li><a href=\"http://router.vuejs.org/\" target=\"_blank\">vue-router</a></li>\n      <li><a href=\"http://vuex.vuejs.org/\" target=\"_blank\">vuex</a></li>\n      <li><a href=\"http://vue-loader.vuejs.org/\" target=\"_blank\">vue-loader</a></li>\n      <li><a href=\"https://github.com/vuejs/awesome-vue\" target=\"_blank\">awesome-vue</a></li>\n    </ul>\n    <b-alert show>Default Alert</b-alert>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'hello',\n  data () {\n    return {\n      msg: 'Welcome to Your Vue.js App'\n    }\n  }\n}\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\nh1, h2 {\n  font-weight: normal;\n}\n\nul {\n  list-style-type: none;\n  padding: 0;\n}\n\nli {\n  display: inline-block;\n  margin: 0 10px;\n}\n\na {\n  color: #42b983;\n}\n</style>\n"
  },
  {
    "path": "tac-console-web/src/components/Home.vue",
    "content": "<template>\n    <b-jumbotron header=\"TAC-Console\" lead=\"The Tangram App Container\">\n\n        <router-link to=\"/tacMs\" class=\"btn btn-primary\">TacMicroService</router-link>\n    </b-jumbotron>\n</template>\n\n\n<script>\nexport default {\n  name: 'Home',\n  data() {\n    return {\n      msg: 'Welcome to Tac App'\n    };\n  }\n};\n</script>\n\n\n<style scoped>\n\n</style>\n"
  },
  {
    "path": "tac-console-web/src/components/TacConsole.vue",
    "content": "<template>\n    <div class=\"\">\n        <b-navbar toggleable=\"md\" type=\"dark\" variant=\"info\">\n\n            <b-navbar-toggle target=\"nav_collapse\"></b-navbar-toggle>\n\n            <b-navbar-brand href=\"#\">TacAdmin</b-navbar-brand>\n\n            <b-collapse is-nav id=\"nav_collapse\">\n\n                <b-navbar-nav>\n\n                    <b-nav-item>\n                        <router-link to=\"/\">Home</router-link>\n                    </b-nav-item>\n                    <b-nav-item>\n                        <router-link to=\"/tacMs\">TacMicroService</router-link>\n                    </b-nav-item>\n                    <b-nav-item href=\"#\">Github</b-nav-item>\n                </b-navbar-nav>\n\n                <!-- Right aligned nav items -->\n                <!-- <b-navbar-nav class=\"ml-auto\">\n\n      <b-nav-form>\n        <b-form-input size=\"sm\" class=\"mr-sm-2\" type=\"text\" placeholder=\"Search\"/>\n        <b-button size=\"sm\" class=\"my-2 my-sm-0\" type=\"submit\">Search</b-button>\n      </b-nav-form>\n\n\n\n    </b-navbar-nav> -->\n\n            </b-collapse>\n        </b-navbar>\n\n        <!-- navbar-1.vue -->\n\n        <div class=\"app-container\">\n            <router-view></router-view>\n        </div>\n\n    </div>\n</template>\n\n<script>\nimport Home from '@/components/Home';\n\nexport default {\n  name: 'TacConsole',\n  data() {\n    return {\n      msg: 'Welcome to Your Vue.js App'\n    };\n  },\n  mounted() {\n    this.$toastr.defaultPosition = 'toast-top-center';\n  }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\nh1,\nh2 {\n  font-weight: normal;\n}\n\nul {\n  list-style-type: none;\n  padding: 0;\n}\n\nli {\n  display: inline-block;\n  margin: 0 10px;\n}\n\na {\n  color: #42b983;\n}\n</style>\n"
  },
  {
    "path": "tac-console-web/src/components/TacInst.vue",
    "content": "<template>\n    <div class=\"tacInst\">\n        <h1>发布流程</h1>\n        <div>\n            <b-alert show variant=\"primary\">\n                <b-badge variant=\"danger\">1</b-badge>\n                上传编译好的zip文件\n                <b-badge variant=\"danger\">2</b-badge>\n                预发布\n                <b-badge variant=\"danger\">3</b-badge>\n                测试验证\n                <b-badge variant=\"danger\">4</b-badge>\n                线上发布\n                <b-badge variant=\"danger\">5</b-badge>\n                回归验证\n            </b-alert>\n        </div>\n        <router-view></router-view>\n\n    </div>\n\n</template>\n\n\n<script>\nexport default {\n  name: 'TacInst'\n};\n</script>\n\n\n\n<style scoped>\n.tacInst {\n  text-align: left;\n  padding: 30px;\n}\n</style>\n\n"
  },
  {
    "path": "tac-console-web/src/components/TacInstPublish.vue",
    "content": "<template>\n    <div class=\"tacInstPublish\">\n\n        <b-row>\n\n            <b-col>\n                <h3>服务编码:{{msCode}} 实例ID: {{instId}} </h3>\n            </b-col>\n        </b-row>\n        <hr>\n        <b-row>\n            <b-col>\n                <b-row>\n                    <b-col>\n                        <h4>预发布</h4> 版本: {{prePublish.jarVersion}} </b-col>\n                    <b-col>\n                        <b-form-file v-model=\"file\" :state=\"Boolean(file)\" placeholder=\"Choose a file...\"></b-form-file>\n                    </b-col>\n                    <b-col>\n                        <b-button size=\"sm\" variant=\"warning\" v-on:click=\"onPrePublish(msCode)\">\n                            预发布\n                        </b-button>\n                        <router-link :to=\"{path:'/tacInst/publishcheck',query:{\n                        msCode:msCode,\n                        instId:instId,\n                        action:'preTest'\n                    }}\" target=\"_blank\">\n                            <b-button size=\"sm\" variant=\"warning\">\n                                预发布测试\n                            </b-button>\n                        </router-link>\n\n                    </b-col>\n                </b-row>\n            </b-col>\n            <b-col>\n                <b-row>\n\n                    <b-col>\n                        <h4>线上发布:</h4> 版本: {{publish.jarVersion}} </b-col>\n\n                    <b-col>\n                        <b-button size=\"sm\" variant=\"danger\" v-on:click=\"onPublish(msCode,instId)\">\n                            正式发布\n                        </b-button>\n                        <router-link :to=\"{path:'/tacInst/publishcheck',query:{\n                        msCode:msCode,\n                        instId:instId,\n                        action:'onlineTest'\n                    }}\" target=\"_blank\">\n                            <b-button size=\"sm\" variant=\"danger\">\n                                线上回归\n                            </b-button>\n                        </router-link>\n\n                    </b-col>\n                </b-row>\n            </b-col>\n        </b-row>\n        <hr>\n        <div>\n            <b-row>\n                <b-col>\n                    <h4>Git分支实例\n                        <b-button size=\"sm\" variant=\"warning\" v-b-modal.modal-inst>\n                            新建实例\n                        </b-button>\n                    </h4>\n\n                </b-col>\n\n            </b-row>\n            <b-row>\n                <b-col>\n                    <div class=\"panel panel-warning\">\n                        <div class=\"panel-body\">\n                            <b-table striped hover :items=\"msInstListItems\" :fields=\"fields\">\n                                <template slot=\"status\" slot-scope=\"data\">\n                                    <span v-if=\"data.item.status==0\">新建</span>\n                                    <span v-else-if=\"data.item.status==1\">预发布</span>\n                                    <span v-else-if=\"data.item.status==2\">正式发布</span>\n                                </template>\n                                <template slot=\"operation\" slot-scope=\"data\">\n                                    <b-button-group size=\"sm\" class=\"spanButtons\">\n                                        <b-button size=\"sm\" variant=\"warning\" v-on:click=\"onClickIntEdit(data.item)\">\n                                            编辑\n                                        </b-button>\n                                    </b-button-group>\n                                    <b-button-group size=\"sm\" class=\"spanButtons\">\n                                        <b-button size=\"sm\" variant=\"warning\" v-on:click=\"onGitPrePublish(data.item.id)\">\n                                            预发布\n                                        </b-button>\n                                        <router-link :to=\"{path:'/tacInst/publishcheck',query:{msCode:msCode,instId:data.item.id, action:'preTest' }}\" target=\"_blank\">\n                                            <b-button size=\"sm\" variant=\"warning\">\n                                                预发布测试\n                                            </b-button>\n                                        </router-link>\n                                    </b-button-group>\n                                    <b-button-group size=\"sm\" class=\"spanButtons\">\n                                        <b-button size=\"sm\" variant=\"danger\" v-on:click=\"onPublish(msCode,data.item.id)\">\n                                            正式发布\n                                        </b-button>\n                                        <router-link :to=\"{path:'/tacInst/publishcheck',query:{ msCode:msCode,instId:data.item.id, action:'onlineTest'}}\" target=\"_blank\">\n                                            <b-button size=\"sm\" variant=\"danger\">\n                                                线上回归\n                                            </b-button>\n                                        </router-link>\n                                    </b-button-group>\n                                </template>\n                            </b-table>\n                        </div>\n                    </div>\n                </b-col>\n\n            </b-row>\n        </div>\n        <!-- Modal Component -->\n        <b-modal id=\"modal-inst\" ref=\"modalinst\" title=\"实例\" @ok=\"handleInstOk\">\n            <form @submit.stop.prevent=\"handleInstSubmit\">\n                <b-form-group id=\"name\" label=\"实例名称\" description=\"\">\n                    <b-form-input type=\"text\" placeholder=\"实例名称\" v-model=\"currentInst.name\"></b-form-input>\n                </b-form-group>\n                <b-form-group id=\"gitBranch\" label=\"git分支\" description=\"\">\n                    <b-form-input type=\"text\" placeholder=\"git分支\" v-model=\"currentInst.gitBranch\"></b-form-input>\n                </b-form-group>\n            </form>\n        </b-modal>\n    </div>\n\n</template>\n\n\n<script>\nconst fields = [\n  {\n    key: 'id',\n    label: '实例ID'\n  },\n  {\n    key: 'name',\n    label: '实例名称'\n  },\n  {\n    key: 'gitBranch',\n    label: 'git分支'\n  },\n  {\n    key: 'status',\n    label: '状态'\n  },\n  'operation'\n];\nexport default {\n  name: 'TacInstPublish',\n  data() {\n    return {\n      instId: 0,\n      msCode: '',\n      prePublish: { jarVersion: '' },\n      publish: { jarVersion: '' },\n      file: null,\n      fields: fields,\n      msInstListItems: [],\n      currentInst: {\n        id: 0,\n        name: '',\n        gitBranch: '',\n        action: 1\n      }\n    };\n  },\n  mounted: function() {\n    this.msCode = this.$route.params.msCode;\n\n    if (!this.msCode) {\n      this.$router.push({ path: '/tacMs/list' });\n      return;\n    }\n\n    this.getMsInstInfo(this.msCode);\n    this.getMsInstList(this.msCode);\n  },\n  methods: {\n    onGitPrePublish: function(instId) {\n      this.$http\n        .get('/api/inst/gitPrePublish', {\n          params: {\n            instId\n          }\n        })\n        .then(resp => {\n          resp.json().then(result => {\n            console.log(result);\n            if (result.success) {\n              this.$toastr.s('预发布成功');\n              this.getMsInstList(this.msCode);\n            } else {\n              this.$toastr.e(data.msgInfo);\n            }\n          });\n        });\n    },\n    onClickIntEdit: function(inst) {\n      this.currentInst = {\n        name: inst.name,\n        gitBranch: inst.gitBranch,\n        action: 2,\n        id: inst.id\n      };\n      this.$refs.modalinst.show();\n    },\n    handleInstOk: function(evt) {\n      evt.preventDefault();\n      let { name, gitBranch, id } = { ...this.currentInst };\n\n      // 参数校验\n      if (!name || !gitBranch) {\n        return;\n      }\n\n      let tacInst = { name, gitBranch, msCode: this.msCode, id };\n\n      if (this.currentInst.action == 1) {\n        // create\n        this.$http.post('/api/inst/create', tacInst).then(resp => {\n          resp.json().then(data => {\n            if (data.success) {\n              this.$toastr.s('创建成功');\n              this.$refs.modalinst.hide();\n              this.getMsInstList(this.msCode);\n            } else {\n              this.$toastr.e(data.msgInfo);\n            }\n          });\n        });\n      } else {\n        tacInst.id = id;\n        this.$http.post('/api/inst/update', tacInst).then(resp => {\n          resp.json().then(data => {\n            if (data.success) {\n              this.$refs.modalinst.hide();\n              this.getMsInstList(this.msCode);\n            } else {\n              this.$toastr.e(data.msgInfo);\n            }\n          });\n        });\n      }\n    },\n    getMsInstInfo: function(msCode) {\n      this.$http.get('/api/inst/info/' + msCode).then(resp => {\n        resp.json().then(result => {\n          let data = result.data;\n          if (data != null) {\n            this.instId = data.id;\n            this.prePublish.jarVersion = data.prePublishJarVersion;\n            this.publish.jarVersion = data.jarVersion;\n          }\n        });\n      });\n    },\n    getMsInstList: function(msCode) {\n      this.$http.get('/api/inst/list/' + msCode).then(resp => {\n        resp.json().then(result => {\n          this.msInstListItems = result.data;\n\n          console.log(result.data);\n        });\n      });\n    },\n    onPrePublish: function(msCode) {\n      if (this.file == null) {\n        this.$toastr.e('缺少文件');\n        return;\n      }\n      let data = new FormData();\n      data.append('msCode', msCode);\n      data.append('file', this.file);\n      data.append('instId', this.instId);\n      let config = {\n        headers: {\n          'Content-Type': 'multipart/form-data'\n        }\n      };\n      this.$http.post('/api/inst/prePublish', data, config).then(resp => {\n        resp.json().then(result => {\n          if (result.success) {\n            this.getMsInstInfo(msCode);\n            this.$toastr.s('预发布成功');\n          } else {\n            this.$toastr.e(result.msgInfo);\n          }\n        });\n      });\n    },\n    onPublish: function(msCode, instId) {\n      this.$http\n        .post('/api/inst/publish', null, {\n          params: {\n            msCode,\n            instId\n          }\n        })\n        .then(resp => {\n          resp.json().then(result => {\n            if (result.success) {\n              this.$toastr.s('发布成功');\n              this.getMsInstList(this.msCode);\n            } else {\n              this.$toastr.e(result.msgInfo);\n            }\n          });\n        });\n    }\n  }\n};\n</script>\n\n\n\n<style scoped>\n\n</style>\n\n"
  },
  {
    "path": "tac-console-web/src/components/TacInstPublishCheck.vue",
    "content": "\n<script>\nimport TacJSONEditor from '@/components/TacJSONEditor';\n\nexport default {\n  name: 'TacInstPublishCheck',\n  mounted: function() {\n    this.paramsEditor = this.$refs.checkParamsEditor;\n\n    this.resultEditor = this.$refs.checkResultEditor;\n\n    let data = this.$route.query;\n\n    let { instId, msCode, action } = data;\n\n    this.instId = instId;\n    this.msCode = msCode;\n    this.action = action;\n  },\n  methods: {\n    test: function() {\n      let params = this.paramsEditor.getJSON();\n      if (this.action == 'preTest') {\n        this.handlePreTest(params);\n      } else {\n        this.handleOnlineTest(params);\n      }\n    },\n    handlePreTest: function(params) {\n      let data = {\n        instId: this.instId,\n        msCode: this.msCode,\n        params: params\n      };\n      this.$http.post('/api/inst/preTest', data).then(resp => {\n        resp.json().then(tacResult => {\n          if (tacResult.success) {\n            console.log(tacResult);\n            let msgInfo = tacResult.data.msgInfo;\n            tacResult.data.msgInfo = '';\n            this.logResult = msgInfo;\n            this.resultEditor.setJSON(tacResult.data);\n          } else {\n            this.$toastr.e(tacResult.msgInfo);\n          }\n        });\n      });\n    },\n    handleOnlineTest: function(params) {\n      let data = {\n        instId: this.instId,\n        msCode: this.msCode,\n        params: params\n      };\n      this.$http.post('/api/inst/onlineTest', data).then(resp => {\n        resp.json().then(tacResult => {\n          if (tacResult.success) {\n            console.log(tacResult);\n            let msgInfo = tacResult.msgInfo;\n            tacResult.msgInfo = '';\n            this.logResult = msgInfo;\n            this.resultEditor.setJSON(tacResult);\n          } else {\n            this.$toastr.e(tacResult.msgInfo);\n          }\n        });\n      });\n    }\n  },\n  data() {\n    return {\n      instId: 0,\n      msCode: '',\n      action: '',\n      logResult: ''\n    };\n  }\n};\n</script>\n\n\n\n\n\n<template>\n    <div>\n        <span>服务编码: {{msCode}}</span>\n        <span>实例ID: {{instId}}</span>\n        <b-row>\n            <b-col cols=\"3\">\n                <span>\n                    请求参数\n                </span>\n                <TacJSONEditor ref=\"checkParamsEditor\"></TacJSONEditor>\n            </b-col>\n            <b-col cols=\"1\">\n                <b-button size=\"sm\" variant=\"danger\" v-on:click=\"test()\" :style=\"{width: '100%'}\">\n                    测试\n                </b-button>\n            </b-col>\n            <b-col cols=\"8\">\n                <span>\n                    结果\n                </span>\n                <TacJSONEditor ref=\"checkResultEditor\"></TacJSONEditor>\n            </b-col>\n        </b-row>\n        <hr>\n        <div>\n            <h5>日志</h5>\n            <p class=\"logResult\">\n                {{logResult}}\n            </p>\n\n        </div>\n\n    </div>\n\n</template>\n\n\n\n\n<style scoped>\n.logResult {\n  background-color: black;\n  color: yellow;\n  padding: 30px;\n  max-height: 600px;\n  overflow: scroll;\n}\n</style>\n"
  },
  {
    "path": "tac-console-web/src/components/TacJSONEditor.vue",
    "content": "<template>\n    <div ref=\"jsoneditor\" :style=\"styleObj\"></div>\n</template>\n\n\n<script>\nimport JSONEditor from 'JSONEditor';\n\nexport default {\n  name: 'TacJSONEditor',\n  props: {\n    styleObj: {\n      type: Object,\n      default: function() {\n        return {\n          width: '100%',\n          height: '500px'\n        };\n      }\n    },\n    options: {\n      type: Object,\n      default: function() {\n        return { modes: ['tree', 'view', 'code'] };\n      }\n    }\n  },\n\n  editor: null,\n  data() {\n    return {};\n  },\n  methods: {\n    setJSON: function(json) {\n      this.editor.set(json);\n      console.log(this);\n    },\n    getJSON: function() {\n      return this.editor.get();\n    }\n  },\n\n  mounted: function() {\n    let container = this.$refs.jsoneditor;\n\n    this.editor = new JSONEditor(container, this.options);\n  }\n};\n</script>\n\n\n<style scoped>\n\n</style>\n\n\n\n\n"
  },
  {
    "path": "tac-console-web/src/components/TacMs.vue",
    "content": "<template>\n    <b-container class=\"tacMs\">\n        <router-view></router-view>\n    </b-container>\n\n</template>\n\n\n<script>\nexport default {\n  name: 'TacMs',\n  data() {\n    return {};\n  }\n};\n</script>\n\n<style  scoped>\n.tacMs {\n  text-align: left;\n}\n</style>\n\n\n"
  },
  {
    "path": "tac-console-web/src/components/TacMsEdit.vue",
    "content": "<template>\n    <div>\n        <b-form @submit=\"onSubmit\" @reset=\"onReset\" v-if=\"show\">\n            <b-form-group label=\"服务ID\" v-show=\"false\">\n                <b-form-input id=\"msId\" type=\"text\" v-model=\"form.id\" readonly>\n                </b-form-input>\n            </b-form-group>\n            <b-form-group id=\"msCode\" label=\"服务编码\" description=\"服务编码，唯一\">\n                <b-form-input id=\"msCode\" type=\"text\" v-model=\"form.code\" required placeholder=\"msCode\" v-bind:readonly=\"isEdit\">\n                </b-form-input>\n            </b-form-group>\n            <b-form-group id=\"name\" label=\"名称\" description=\"服务名称\">\n                <b-form-input id=\"name\" type=\"text\" v-model=\"form.name\" required placeholder=\"name\">\n                </b-form-input>\n            </b-form-group>\n            <b-form-group id=\"gitRepo\" label=\"git仓库\" description=\"git仓库地址\">\n                <b-form-input id=\"gitRepo\" type=\"text\" v-model=\"form.gitRepo\" placeholder=\"\">\n                </b-form-input>\n            </b-form-group>\n            <b-button type=\"submit\" variant=\"primary\">Submit</b-button>\n            <b-button type=\"reset\" variant=\"danger\">Reset</b-button>\n        </b-form>\n    </div>\n    <!-- b-form-1.vue -->\n</template>\n\n\n<script>\nexport default {\n  data() {\n    return {\n      form: {\n        id: 0,\n        code: '',\n        name: '',\n        gitRepo: ''\n      },\n      show: true,\n      isEdit: false\n    };\n  },\n  mounted: function() {\n    let editParams = this.$route.params;\n\n    if (editParams && editParams.code) {\n      this.isEdit = true;\n      this.form = { ...this.$route.params };\n    }\n  },\n  methods: {\n    handleSave: function() {\n      let tacMc = {\n        id: this.form.id,\n        code: this.form.code,\n        name: this.form.name,\n        gitRepo: this.form.gitRepo\n      };\n\n      this.$http.post('/api/ms/update', tacMc).then(resp => {\n        resp.json().then(data => {\n          if (data.success) {\n            this.$toastr.s('保存成功');\n            this.$router.push({ path: '/tacMs/list' });\n          } else {\n            this.$toastr.e(data.msgInfo);\n          }\n        });\n      });\n    },\n    handleCreate: function() {\n      let tacMc = {\n        code: this.form.code,\n        name: this.form.name\n      };\n\n      this.$http.post('/api/ms/create', tacMc).then(resp => {\n        resp.json().then(data => {\n          if (data.success) {\n            this.$toastr.s('新增成功');\n            this.$router.push({ path: '/tacMs/list' });\n          } else {\n            this.$toastr.e(data.msgInfo);\n          }\n        });\n      });\n    },\n    onSubmit(evt) {\n      evt.preventDefault();\n\n      if (this.isEdit) {\n        this.handleSave();\n      } else {\n        this.handleCreate();\n      }\n    },\n    onReset(evt) {\n      evt.preventDefault();\n      /* Reset our form values */\n      this.form.code = '';\n      this.form.name = '';\n      this.form.gitRepo = '';\n      this.$nextTick(() => {\n        this.show = true;\n      });\n    }\n  }\n};\n</script>\n\n<style  scoped>\n\n</style>\n\n\n"
  },
  {
    "path": "tac-console-web/src/components/TacMsList.vue",
    "content": "<template>\n    <div>\n        <div class=\"panel panel-warning\">\n            <div class=\"panel-heading\">\n                <h3 class=\"panel-title\">服务列表</h3>\n                <router-link :to=\"{ name: 'newMs'}\" class=\"btn btn-warning\">新建服务</router-link>\n            </div>\n            <div class=\"panel-body\">\n                <b-table striped hover :items=\"items\" :fields=\"fields\">\n                    <template slot=\"operation\" slot-scope=\"data\">\n                        <b-button-group size=\"sm\" class=\"spanButtons\">\n                            <router-link :to=\"{ name: 'editMs',params:data.item} \" class=\"btn btn-warning\">编辑</router-link>\n                            <router-link :to=\"{ name: 'msInstPublish',params:{msCode:data.item.code}} \" class=\"btn btn-success\">实例发布</router-link>\n                            <!-- <b-button variant=\"danger\" class=\"spanButton\" v-on:click=\"offlineMs(data.item.code)\">删除</b-button> -->\n                        </b-button-group>\n                    </template>\n                </b-table>\n            </div>\n        </div>\n\n    </div>\n</template>\n\n<script>\nconst items = [];\nconst fields = [\n  {\n    key: 'code',\n    label: '服务编码'\n  },\n  {\n    key: 'name',\n    label: '服务名称'\n  },\n  'operation'\n];\nexport default {\n  name: 'TacMsList',\n  data() {\n    return {\n      items: items,\n      fields: fields\n    };\n  },\n  methods: {\n    offlineMs: function(msCode) {\n      this.$http\n        .post('/api/ms/offline', null, {\n          params: {\n            msCode: msCode\n          }\n        })\n        .then(result => {\n          this.loadAllMs();\n        });\n    },\n    loadAllMs: function() {\n      this.$http.get('/api/ms/list').then(resp => {\n        resp.json().then(result => {\n          if (result.success) {\n            this.items = result.data;\n          }\n        });\n      });\n    }\n  },\n\n  mounted: function() {\n    this.loadAllMs();\n  }\n};\n</script>\n\n<style scoped>\n\n</style>\n\n\n\n\n\n\n"
  },
  {
    "path": "tac-console-web/src/main.js",
    "content": "// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue';\nimport BootstrapVue from 'bootstrap-vue';\nimport VueResource from 'vue-resource';\nimport Toastr from 'vue-toastr';\nimport App from './App';\nimport router from './router';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport 'bootstrap-vue/dist/bootstrap-vue.css';\nimport 'jsoneditor/dist/jsoneditor.css';\n\nimport 'vue-toastr/dist/vue-toastr.css';\n\nimport TacConsole from '@/components/TacConsole';\nimport TacJSONEditor from '@/components/TacJSONEditor';\n\nimport '../static/main.css';\n\nVue.use(Toastr);\nVue.use(BootstrapVue);\nVue.use(VueResource);\n\nVue.component('TacConsole', TacConsole);\nVue.component('TacJSONEditor', TacJSONEditor);\n\nVue.config.productionTip = false;\n\n/* eslint-disable no-new */\nnew Vue({\n    el: '#app',\n    router,\n    template: '<App/>',\n    components: { App }\n});\n"
  },
  {
    "path": "tac-console-web/src/router/index.js",
    "content": "import Vue from 'vue';\nimport Router from 'vue-router';\nimport TacConsole from '@/components/TacConsole';\nimport Home from '@/components/Home';\nimport TacMs from '@/components/TacMs';\nimport TacMsList from '@/components/TacMsList';\nimport TacMsEdit from '@/components/TacMsEdit';\nimport TacInst from '@/components/TacInst';\nimport TacInstPublish from '@/components/TacInstPublish';\nimport TacInstPublishCheck from '@/components/TacInstPublishCheck';\n\nVue.component('Home', Home);\nVue.component('TacMs', TacMs);\n\nVue.use(Router);\n\nexport default new Router({\n    routes: [\n        { path: '/', redirect: '/home' },\n        {\n            path: '/home',\n            name: 'home',\n            component: Home\n        },\n        {\n            path: '/tacMs',\n            redirect: '/tacMs/list',\n            component: TacMs,\n            children: [\n                {\n                    path: 'list',\n                    component: TacMsList\n                },\n                {\n                    path: 'new',\n                    name: 'newMs',\n                    component: TacMsEdit\n                },\n                {\n                    path: 'edit/:code',\n                    name: 'editMs',\n                    component: TacMsEdit\n                }\n            ]\n        },\n        {\n            path: '/tacInst',\n            component: TacInst,\n            redirect: '/tacMs/list',\n            children: [\n                {\n                    name: 'msInstPublish',\n                    path: 'publish/:msCode',\n                    component: TacInstPublish\n                },\n                {\n                    path: 'publishcheck',\n                    name: 'instTest',\n                    component: TacInstPublishCheck\n                }\n            ]\n        }\n    ]\n});\n"
  },
  {
    "path": "tac-console-web/static/.gitkeep",
    "content": ""
  },
  {
    "path": "tac-console-web/static/main.css",
    "content": ".spanButton {\n    margin-left: 10px;\n}\n"
  },
  {
    "path": "tac-container/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>tac</artifactId>\n        <groupId>com.alibaba</groupId>\n        <version>0.0.4</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>tac-container</artifactId>\n    <packaging>jar</packaging>\n\n    <name>tac-container</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n\n    <dependencies>\n\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-web</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-actuator</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-devtools</artifactId>\n            <scope>runtime</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.projectlombok</groupId>\n            <artifactId>lombok</artifactId>\n            <optional>true</optional>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-test</artifactId>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-configuration-processor</artifactId>\n            <optional>true</optional>\n        </dependency>\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>tac-engine</artifactId>\n        </dependency>\n    </dependencies>\n\n    <build>\n\n        <plugins>\n            <plugin>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-maven-plugin</artifactId>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <source>${jdk.version}</source>\n                    <target>${jdk.version}</target>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-resources-plugin</artifactId>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n        </plugins>\n\n    </build>\n\n</project>\n"
  },
  {
    "path": "tac-container/src/main/java/com/alibaba/tac/container/ContainerApplication.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.container;\n\nimport com.alibaba.tac.engine.bootlaucher.BootJarLaucherUtils;\nimport com.alibaba.tac.engine.code.CodeLoadService;\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.boot.Banner;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;\nimport org.springframework.boot.loader.jar.JarFile;\nimport org.springframework.context.ApplicationListener;\nimport org.springframework.context.annotation.*;\nimport org.springframework.web.servlet.config.annotation.CorsRegistry;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurer;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\n/**\n * @author jinshuan.li 07/02/2018 11:18\n */\n@SpringBootApplication(scanBasePackages = {\"com.alibaba.tac\"})\n@PropertySources({@PropertySource(\"application.properties\")})\n@EnableAspectJAutoProxy(proxyTargetClass = true)\n@Import(ContainerBeanConfig.class)\n@Slf4j\npublic class ContainerApplication {\n\n    public static void main(String[] args) throws Exception {\n\n        // the code must execute before spring start\n        JarFile bootJarFile = BootJarLaucherUtils.getBootJarFile();\n        if (bootJarFile != null) {\n            BootJarLaucherUtils.unpackBootLibs(bootJarFile);\n            log.debug(\"the temp tac lib folder:{}\", BootJarLaucherUtils.getTempUnpackFolder());\n        }\n        SpringApplication springApplication = new SpringApplication(ContainerApplication.class);\n\n        springApplication.setWebEnvironment(true);\n        springApplication.setBannerMode(Banner.Mode.OFF);\n\n        springApplication.addListeners(new ApplicationListener<ApplicationEnvironmentPreparedEvent>() {\n            @Override\n            public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {\n                CodeLoadService.changeClassLoader(event.getEnvironment());\n            }\n        });\n        springApplication.run(args);\n    }\n\n    @Bean\n    public WebMvcConfigurer webMvcConfigurer() {\n        return new WebMvcConfigurerAdapter() {\n            @Override\n            public void addCorsMappings(CorsRegistry registry) {\n                registry.addMapping(\"/api/**\");\n            }\n        };\n    }\n}\n"
  },
  {
    "path": "tac-container/src/main/java/com/alibaba/tac/container/ContainerBeanConfig.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.container;\n\nimport com.alibaba.tac.engine.service.EngineBeansConfig;\nimport org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Import;\n\n/**\n * @author jinshuan.li 01/03/2018 17:21\n */\n@ConditionalOnProperty(name = \"scan.package.name\")\n@Configuration\n@ComponentScan(basePackages = \"${scan.package.name}\")\n@Import(EngineBeansConfig.class)\npublic class ContainerBeanConfig {\n\n}\n"
  },
  {
    "path": "tac-container/src/main/java/com/alibaba/tac/container/web/TacApiController.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.container.web;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.tac.engine.service.TacEngineService;\nimport com.alibaba.tac.sdk.common.TacParams;\nimport com.alibaba.tac.sdk.common.TacResult;\nimport com.alibaba.tac.sdk.error.ErrorCode;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang3.StringUtils;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.annotation.Resource;\nimport java.util.Map;\n\n/**\n * @author jinshuan.li 12/02/2018 20:27\n *\n * the online api when run tac-container\n */\n@RestController\n@RequestMapping(\"/api/tac\")\n@Slf4j\npublic class TacApiController {\n\n    @Resource\n    private TacEngineService tacEngineService;\n\n    @GetMapping(\"/execute/{msCode}\")\n    public TacResult<Map<String, Object>> execute(@PathVariable String msCode,\n                                                  @RequestParam(required = false) String paramMap) {\n\n        try {\n            TacParams tacParamsDO = new TacParams(\"tac\", msCode);\n\n            if (StringUtils.isEmpty(paramMap)) {\n\n            } else {\n                tacParamsDO.setParamMap(JSON.parseObject(paramMap));\n            }\n\n            return tacEngineService.execute(msCode, tacParamsDO);\n        } catch (Exception e) {\n            log.error(\"execute error msCode:{} tacParams:{} {}\", msCode, paramMap, e.getMessage(), e);\n\n            return TacResult.errorResult(msCode, String.valueOf(ErrorCode.SYS_EXCEPTION));\n        }\n\n    }\n\n    @PostMapping(\"/execute/{msCode}\")\n    public TacResult<Map<String, Object>> executePost(@PathVariable String msCode,\n                                                      @RequestBody Map<String, Object> paramMap) {\n\n        try {\n            TacParams tacParamsDO = new TacParams(\"tac\", msCode);\n\n            tacParamsDO.setParamMap(paramMap);\n\n            return tacEngineService.execute(msCode, tacParamsDO);\n        } catch (Exception e) {\n            log.error(\"execute error msCode:{} tacParams:{} {}\", msCode, paramMap, e.getMessage(), e);\n\n            return TacResult.errorResult(msCode, String.valueOf(ErrorCode.SYS_EXCEPTION));\n        }\n\n    }\n}\n"
  },
  {
    "path": "tac-container/src/main/resources/application.properties",
    "content": "project.name=tac-container\n\n\n# http port\nserver.port=8001\n# endpoint port\nmanagement.port=8002\n\n\n\n\ntac.default.store=redis\n\n\nscan.package.name=com.tmall.tac.test\n\n\ntac.extend.lib=extendlibs\n\nlogging.config=classpath:tac/default-logback-spring.xml\n\n\ntac.container.web.api=http://localhost:8001/api/tac/execute"
  },
  {
    "path": "tac-custom-datasource-demo/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>tac</artifactId>\n        <groupId>com.alibaba</groupId>\n        <version>0.0.4</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <version>0.0.4-SNAPSHOT</version>\n\n    <artifactId>tac-custom-datasource-demo</artifactId>\n    <packaging>jar</packaging>\n\n    <name>tac-custom-datasource-demo</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>tac-sdk</artifactId>\n            <version>0.0.4</version>\n        </dependency>\n    </dependencies>\n</project>\n"
  },
  {
    "path": "tac-custom-datasource-demo/src/main/java/com/tmall/itemcenter/ItemDO.java",
    "content": "package com.tmall.itemcenter;\n\nimport lombok.Data;\n\n/**\n * @author jinshuan.li 10/03/2018 15:43\n */\n@Data\npublic class ItemDO {\n\n    /**\n     * itemID\n     */\n    private Long id;\n\n    /**\n     * item name\n     */\n    private String name;\n\n    /**\n     * item price\n     */\n    private String price;\n\n    public ItemDO(Long id, String name, String price) {\n\n        this.id = id;\n        this.name = name;\n        this.price = price;\n    }\n}\n"
  },
  {
    "path": "tac-custom-datasource-demo/src/main/java/com/tmall/itemcenter/TmallItemService.java",
    "content": "package com.tmall.itemcenter;\n\nimport org.springframework.stereotype.Service;\n\n/**\n * @author jinshuan.li 10/03/2018 15:43\n */\n@Service\npublic class TmallItemService {\n\n    /**\n     * get a item\n     *\n     * @param id\n     * @return\n     */\n    public ItemDO getItem(Long id) {\n\n        // mock data\n        return new ItemDO(id, \"A Song of Ice and Fire\", \"￥222.00\");\n    }\n\n}\n"
  },
  {
    "path": "tac-custom-datasource-demo/src/test/java/com/alibaba/tac/AppTest.java",
    "content": "package com.alibaba.tac;\n\nimport junit.framework.Test;\nimport junit.framework.TestCase;\nimport junit.framework.TestSuite;\n\n/**\n * Unit test for simple App.\n */\npublic class AppTest \n    extends TestCase\n{\n    /**\n     * Create the test case\n     *\n     * @param testName name of the test case\n     */\n    public AppTest( String testName )\n    {\n        super( testName );\n    }\n\n    /**\n     * @return the suite of tests being tested\n     */\n    public static Test suite()\n    {\n        return new TestSuite( AppTest.class );\n    }\n\n    /**\n     * Rigourous Test :-)\n     */\n    public void testApp()\n    {\n        assertTrue( true );\n    }\n}\n"
  },
  {
    "path": "tac-dev-source-demo/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>tac</artifactId>\n        <groupId>com.alibaba</groupId>\n        <version>0.0.4</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>tac-dev-source</artifactId>\n    <packaging>jar</packaging>\n\n    <name>tac-dev-source-demo</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>tac-sdk</artifactId>\n            <version>0.0.4</version>\n        </dependency>\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>tac-custom-datasource-demo</artifactId>\n            <version>0.0.4-SNAPSHOT</version>\n        </dependency>\n    </dependencies>\n\n\n    <build>\n\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <source>${jdk.version}</source>\n                    <target>${jdk.version}</target>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-resources-plugin</artifactId>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n        </plugins>\n\n    </build>\n</project>\n"
  },
  {
    "path": "tac-dev-source-demo/src/main/java/com/alibaba/tac/biz/processor/HelloWorldTac.java",
    "content": "package com.alibaba.tac.biz.processor;\n\nimport com.alibaba.tac.sdk.common.TacResult;\nimport com.alibaba.tac.sdk.domain.Context;\nimport com.alibaba.tac.sdk.factory.TacInfrasFactory;\nimport com.alibaba.tac.sdk.handler.TacHandler;\nimport com.alibaba.tac.sdk.infrastracture.TacLogger;\nimport com.tmall.itemcenter.ItemDO;\nimport com.tmall.itemcenter.TmallItemService;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * @author jinshuan.li\n */\npublic class HelloWorldTac implements TacHandler<Object> {\n\n    /**\n     * get the logger service\n     */\n    private TacLogger tacLogger = TacInfrasFactory.getLogger();\n\n    private TmallItemService tmallItemService = TacInfrasFactory.getServiceBean(TmallItemService.class);\n\n    /**\n     * implement a class which implements TacHandler interface {@link TacHandler}\n     *\n     * @param context\n     * @return\n     * @throws Exception\n     */\n\n    @Override\n    public TacResult<Object> execute(Context context) throws Exception {\n\n        // the code\n        tacLogger.info(\"Hello World22\");\n\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"name\", \"hellotac\");\n        data.put(\"platform\", \"iPhone\");\n        data.put(\"clientVersion\", \"7.0.2\");\n        data.put(\"userName\", \"tac-userName\");\n\n        ItemDO item = tmallItemService.getItem(1L);\n        data.put(\"item\", item);\n        return TacResult.newResult(data);\n    }\n}\n"
  },
  {
    "path": "tac-engine/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>tac</artifactId>\n        <groupId>com.alibaba</groupId>\n        <version>0.0.4</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>tac-engine</artifactId>\n    <packaging>jar</packaging>\n\n    <name>tac-engine</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>tac-infrastructure</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>tac-sdk</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-loader</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>commons-io</groupId>\n            <artifactId>commons-io</artifactId>\n        </dependency>\n    </dependencies>\n\n    <build>\n\n        <plugins>\n\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <source>${jdk.version}</source>\n                    <target>${jdk.version}</target>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-resources-plugin</artifactId>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n        </plugins>\n\n    </build>\n</project>\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/autoconfigure/TacAutoConfiguration.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.autoconfigure;\n\nimport com.alibaba.tac.engine.properties.TacDataPathProperties;\nimport org.springframework.boot.context.properties.EnableConfigurationProperties;\nimport org.springframework.context.annotation.Configuration;\n\nimport javax.annotation.Resource;\n\n/**\n * @author jinshuan.li 2018/3/1 08:17\n *\n * the tac auto confige class. do nothing in the verion;\n */\n\n@Configuration\n@EnableConfigurationProperties(TacDataPathProperties.class)\npublic class TacAutoConfiguration {\n\n    @Resource\n    private TacDataPathProperties tacDataPathProperties;\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/bootlaucher/BootJarLaucherUtils.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.bootlaucher;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.springframework.boot.loader.archive.Archive;\nimport org.springframework.boot.loader.archive.JarFileArchive;\nimport org.springframework.boot.loader.data.RandomAccessData;\nimport org.springframework.boot.loader.jar.JarFile;\n\nimport java.io.*;\nimport java.net.URI;\nimport java.security.CodeSource;\nimport java.security.ProtectionDomain;\nimport java.util.Enumeration;\nimport java.util.jar.JarEntry;\n\n/**\n * @author jinshuan.li 08/03/2018 19:12\n *\n * The Boot Laucher Helper class,  unpack jar files in the boot jar file.  the files are used to compile new java code;\n */\npublic class BootJarLaucherUtils {\n\n    private static File tempUnpackFolder;\n\n    private static final int BUFFER_SIZE = 32 * 1024;\n\n    static final String BOOT_INF_LIB = \"BOOT-INF/lib/\";\n\n    /**\n     *\n     * unpack jar to temp folder\n     * @param jarFile\n     * @return\n     */\n    public static Integer unpackBootLibs(JarFile jarFile) throws IOException {\n\n        Enumeration<JarEntry> entries = jarFile.entries();\n        int count = 0;\n        while (entries.hasMoreElements()) {\n\n            JarEntry jarEntry = entries.nextElement();\n            if (jarEntry.getName().startsWith(BOOT_INF_LIB) && jarEntry.getName().endsWith(\".jar\")) {\n                getUnpackedNestedArchive(jarFile, jarEntry);\n                count++;\n            }\n        }\n        return count;\n    }\n\n    /**\n     *\n     * @param jarFile\n     * @param jarEntry\n     * @return\n     * @throws IOException\n     */\n    private static Archive getUnpackedNestedArchive(JarFile jarFile, JarEntry jarEntry) throws IOException {\n        String name = jarEntry.getName();\n        if (name.lastIndexOf(\"/\") != -1) {\n            name = name.substring(name.lastIndexOf(\"/\") + 1);\n        }\n        File file = new File(getTempUnpackFolder(), name);\n        if (!file.exists() || file.length() != jarEntry.getSize()) {\n            unpack(jarFile, jarEntry, file);\n        }\n        return new JarFileArchive(file, file.toURI().toURL());\n    }\n\n    public static File getTempUnpackFolder() {\n        if (tempUnpackFolder == null) {\n            File tempFolder = new File(System.getProperty(\"java.io.tmpdir\"));\n            tempUnpackFolder = createUnpackFolder(tempFolder);\n        }\n        return tempUnpackFolder;\n    }\n\n    /**\n     * create the unpack folder\n     * @param parent\n     * @return\n     */\n    private static File createUnpackFolder(File parent) {\n        int attempts = 0;\n        while (attempts++ < 1000) {\n            String fileName = \"com.alibaba.tac\";\n            File unpackFolder = new File(parent,\n                fileName + \"-spring-boot-libs\");\n\n            if (unpackFolder.exists()) {\n                return unpackFolder;\n            }\n            if (unpackFolder.mkdirs()) {\n                return unpackFolder;\n            }\n        }\n        throw new IllegalStateException(\n            \"Failed to create unpack folder in directory '\" + parent + \"'\");\n    }\n\n    /**\n     *\n     * @param jarFile\n     * @param entry\n     * @param file\n     * @throws IOException\n     */\n    private static void unpack(JarFile jarFile, JarEntry entry, File file) throws IOException {\n        InputStream inputStream = jarFile.getInputStream(entry, RandomAccessData.ResourceAccess.ONCE);\n        try {\n            OutputStream outputStream = new FileOutputStream(file);\n            try {\n                byte[] buffer = new byte[BUFFER_SIZE];\n                int bytesRead = -1;\n                while ((bytesRead = inputStream.read(buffer)) != -1) {\n                    outputStream.write(buffer, 0, bytesRead);\n                }\n                outputStream.flush();\n            } finally {\n                outputStream.close();\n            }\n        } finally {\n            inputStream.close();\n        }\n    }\n\n    /**\n     * get the boot jar file\n     *\n     * @return  the boot jar file; null is run through folder\n     * @throws Exception\n     */\n    public final static JarFile getBootJarFile() throws Exception {\n        ProtectionDomain protectionDomain = BootJarLaucherUtils.class.getProtectionDomain();\n        CodeSource codeSource = protectionDomain.getCodeSource();\n        URI location = (codeSource == null ? null : codeSource.getLocation().toURI());\n\n        String path = (location == null ? null : location.toURL().getPath());\n        if (path == null) {\n            throw new IllegalStateException(\"Unable to determine code source archive\");\n        }\n\n        if (path.lastIndexOf(\"!/BOOT-INF\") <= 0) {\n            return null;\n        }\n        path = path.substring(0, path.lastIndexOf(\"!/BOOT-INF\"));\n\n        path = StringUtils.replace(path, \"file:\", \"\");\n\n        File root = new File(path);\n\n        if (root.isDirectory()) {\n            return null;\n        }\n        if (!root.exists()) {\n            throw new IllegalStateException(\n                \"Unable to determine code source archive from \" + root);\n        }\n        return new JarFile(root);\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/code/CodeCompileService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.code;\n\nimport com.alibaba.tac.engine.compile.IJdkCompiler;\nimport com.alibaba.tac.engine.compile.InstCodeInfo;\nimport com.alibaba.tac.engine.compile.JavaSourceCode;\nimport com.alibaba.tac.engine.util.TacCompressUtils;\nimport com.alibaba.tac.sdk.error.ErrorCode;\nimport com.alibaba.tac.sdk.error.ServiceException;\nimport org.apache.commons.collections.CollectionUtils;\nimport org.apache.commons.lang3.StringUtils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.FileCopyUtils;\n\nimport javax.annotation.Resource;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\nimport java.io.StringWriter;\nimport java.util.List;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\n/**\n * @author jinshuan.li 12/02/2018 09:07\n */\n@Service\npublic class CodeCompileService {\n\n    private Logger LOGGER = LoggerFactory.getLogger(CodeCompileService.class);\n\n    @Autowired\n    private IJdkCompiler jdkCompiler;\n\n    @Resource\n    private TacFileService tacFileService;\n\n    public static final Pattern PACKAGE_PATTERN = Pattern.compile(\"package\\\\s+([$_a-zA-Z][$_a-zA-Z0-9\\\\.]*)\\\\s*;\");\n\n    public static final Pattern CLASS_PATTERN = Pattern.compile(\"(?<=\\\\n|\\\\A)(?:\\\\s*public\\\\s)?\\\\s*\" +\n        \"(final\\\\s+class|final\\\\s+public\\\\s+class|\" +\n        \"abstract\\\\s+class|abstract\\\\s+public\\\\s+class|\" +\n        \"class|\" +\n        \"abstract\\\\s+interface|abstract\\\\s+public\\\\s+interface|\" +\n        \"interface|\" + \"@interface|\" +\n        \"enum)\\\\s+([$_a-zA-Z][$_a-zA-Z0-9]*)\");\n\n    /**\n     * compile files\n     * @param instId  the instanceId\n     * @param sourceFileDicPath\n     * @return\n     * @throws ServiceException\n     */\n    public Boolean compile(Long instId, String sourceFileDicPath) throws ServiceException {\n\n        File sourceFileDic = new File(sourceFileDicPath);\n        List<File> sourceFile = TacFileService.listAllFiles(sourceFileDic);\n        if (CollectionUtils.isEmpty(sourceFile)) {\n            throw new ServiceException(ErrorCode.ILLEGAL_ARGUMENT, \"there is no code\");\n        }\n        InstCodeInfo codeInfo = getProcessCodeInfo(sourceFile);\n        codeInfo.setInstId(instId);\n        StringWriter compileInfo = new StringWriter();\n        boolean compileResult = false;\n        try {\n            compileResult = jdkCompiler.compile(codeInfo, compileInfo);\n        } catch (Exception e) {\n            throw new ServiceException(ErrorCode.ILLEGAL_ARGUMENT, \"code compile fail: \" + e.getMessage());\n        }\n        if (!compileResult) {\n            throw new ServiceException(ErrorCode.ILLEGAL_ARGUMENT, \"code compile fail: \" + compileInfo.getBuffer().toString());\n        }\n\n        return compileResult;\n    }\n\n    /**\n     * compile files\n     *\n     * @param msCode\n     * @param sourceFileDicPath\n     * @return\n     * @throws ServiceException\n     */\n    public Boolean compile(String msCode, String sourceFileDicPath) throws ServiceException {\n\n        File sourceFileDic = new File(sourceFileDicPath);\n        List<File> sourceFile = TacFileService.listAllFiles(sourceFileDic);\n        if (CollectionUtils.isEmpty(sourceFile)) {\n            throw new ServiceException(ErrorCode.ILLEGAL_ARGUMENT, \"there is no code\");\n        }\n        InstCodeInfo codeInfo = getProcessCodeInfo(sourceFile);\n        codeInfo.setInstId(0L);\n        codeInfo.setName(msCode);\n        StringWriter compileInfo = new StringWriter();\n        boolean compileResult = false;\n        try {\n            compileResult = jdkCompiler.compileWithMsCode(codeInfo, compileInfo);\n        } catch (Exception e) {\n            throw new ServiceException(ErrorCode.ILLEGAL_ARGUMENT, \"code compile fail: \" + e.getMessage());\n        }\n        if (!compileResult) {\n            throw new ServiceException(ErrorCode.ILLEGAL_ARGUMENT, \"code compile fail: \" + compileInfo.getBuffer().toString());\n        }\n\n        return compileResult;\n    }\n\n    /**\n     * get file info\n     * @param codeFiles\n     * @return\n     */\n    private InstCodeInfo getProcessCodeInfo(List<File> codeFiles) {\n        InstCodeInfo processCodeInfo = new InstCodeInfo();\n        if (CollectionUtils.isEmpty(codeFiles)) {\n            return null;\n        }\n        for (File codeFile : codeFiles) {\n            //filter the .java file\n            if (codeFile == null || !StringUtils.endsWith(codeFile.getName(), \".java\")) {\n                continue;\n            }\n            FileInputStream in = null;\n            try {\n                in = new FileInputStream(codeFile);\n                byte[] buffer = new byte[(int)codeFile.length()];\n                if (in.read(buffer) > 0) {\n                    String content = new String(buffer, \"UTF-8\");\n                    JavaSourceCode unit = getCodeInfo(content);\n                    processCodeInfo.getJavaSourceCodes().add(unit);\n                }\n            } catch (Exception e) {\n                LOGGER.error(\"read File Error!files = \" + codeFiles, e);\n            } finally {\n                if (in != null) {\n                    try {\n                        in.close();\n                    } catch (IOException e) {\n                        LOGGER.error(\"Close FileInputStream Failed! files=\" + codeFiles);\n                    }\n                }\n            }\n        }\n        return processCodeInfo;\n    }\n\n    /**\n     * get class info through code\n     * @param content\n     * @return\n     */\n    private JavaSourceCode getCodeInfo(String content) {\n        JavaSourceCode unit = new JavaSourceCode();\n        // the source\n        unit.setSource(content);\n        // class name and file name\n        Matcher matcher = CLASS_PATTERN.matcher(content);\n        if (matcher.find()) {\n            unit.setClassName(matcher.group(2));\n            unit.setFileName(matcher.group(2) + \".java\");\n        }\n        // package name\n        matcher = PACKAGE_PATTERN.matcher(content);\n        if (matcher.find()) {\n            unit.setPackageName(matcher.group(1));\n        }\n        return unit;\n    }\n\n    public byte[] getJarFile(Long instId) throws IOException {\n\n        return getJarFile(String.valueOf(instId));\n    }\n\n    /**\n     * get the packaged jar file data\n     * @param msCode\n     * @return\n     * @throws IOException\n     */\n    public byte[] getJarFile(String msCode) throws IOException {\n        FileInputStream inputStream = null;\n        byte[] zipFileBytes = null;\n        try {\n            // classse  directory\n            String zipDirectory = tacFileService.getClassFileOutputPath(msCode);\n            String zipOutputPathName = zipDirectory + \".zip\";\n\n            // the output zip\n            File outputFile = new File(zipOutputPathName);\n            if (outputFile.exists()) {\n                TacFileService.deleteRecursively(outputFile);\n            }\n\n            TacCompressUtils.compress(zipDirectory + File.separator + \"com\", zipOutputPathName);\n            final File zipFile = new File(zipOutputPathName);\n\n            if (!zipFile.exists()) {\n                return zipFileBytes;\n            }\n            inputStream = new FileInputStream(zipFile);\n            zipFileBytes = FileCopyUtils.copyToByteArray(inputStream);\n\n        } catch (Exception e) {\n            return zipFileBytes;\n        } finally {\n            if (inputStream != null) {\n                inputStream.close();\n            }\n        }\n        if (zipFileBytes == null) {\n            return zipFileBytes;\n        }\n        return zipFileBytes;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/code/CodeLoadService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.code;\n\nimport com.alibaba.tac.engine.compile.IJdkCompiler;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang3.StringUtils;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.core.env.Environment;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.PostConstruct;\nimport javax.annotation.Resource;\nimport java.io.File;\nimport java.io.FileFilter;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Modifier;\nimport java.net.MalformedURLException;\nimport java.net.URL;\nimport java.util.Enumeration;\nimport java.util.zip.ZipEntry;\nimport java.util.zip.ZipFile;\n\n/**\n * @author jinshuan.li 12/02/2018 14:02\n *\n * the code loader service class, load  biz class through tac instance and jar file;\n */\n@Slf4j\n@Service\npublic class CodeLoadService {\n\n    private CustomerClassLoader extendClassLoader = null;\n\n    @PostConstruct\n    public void init() {\n        loadCustomerDirectory();\n    }\n\n    @Value(\"${tac.extend.lib:extendlibs}\")\n    private String extendlibs;\n\n    @Resource\n    private IJdkCompiler jdkCompiler;\n\n    @Resource\n    private TacFileService tacFileService;\n\n    static {\n\n    }\n\n    /**\n     *\n     * @param environment\n     */\n    public static void changeClassLoader(Environment environment) {\n\n        String extendlibs = environment.getProperty(\"tac.extend.lib\", \"extendlibs\");\n        try {\n            // change class loader ,this allow us load class in extend jars\n            ClassLoader classLoader = CodeLoadService.changeClassLoader(extendlibs);\n        } catch (Exception e) {\n            log.error(e.getMessage(), e);\n        }\n    }\n\n    /**\n     *\n     * change class loader ,this allow us load class in extend jars\n     * @param path\n     * @return\n     */\n    public static ClassLoader changeClassLoader(String path) throws IllegalAccessException, NoSuchFieldException {\n\n        try {\n\n            File file = new File(path);\n            if (!file.exists() || !file.isDirectory()) {\n                return CodeLoadService.class.getClassLoader();\n            }\n            ClassLoader classLoader = getAppClassLoader();\n\n            String[] list = file.list();\n            if (list == null || list.length == 0) {\n                return classLoader;\n            }\n            URL[] urls = new URL[list.length];\n            int index = 0;\n            String absolutePath = file.getAbsolutePath();\n            for (String jarFile : list) {\n                File item = new File(absolutePath + \"/\" + jarFile);\n                URL url = item.toURI().toURL();\n                urls[index] = url;\n                index++;\n            }\n\n            // change classloader's parent\n            log.info(\"find extendlibs . changing classloader....\");\n\n            Field parent = ClassLoader.class.getDeclaredField(\"parent\");\n            parent.setAccessible(true);\n\n            SpringClassLoader extendClassLoader = new SpringClassLoader(urls, classLoader.getParent());\n            parent.set(classLoader, extendClassLoader);\n\n            return classLoader;\n        } catch (MalformedURLException e) {\n            log.error(e.getMessage(), e);\n        }\n        return CodeLoadService.class.getClassLoader();\n    }\n\n    /**\n     * get the AppClassLoader\n     * @return\n     */\n    private static ClassLoader getAppClassLoader() {\n        ClassLoader classLoader = CodeLoadService.class.getClassLoader();\n        while (classLoader != null) {\n            if (!StringUtils.containsIgnoreCase(classLoader.getClass().getName(), \"AppClassLoader\")) {\n                classLoader = classLoader.getParent();\n            } else {\n                return classLoader;\n            }\n        }\n        return null;\n    }\n\n    /**\n     * change classloader\n     *\n     * @return\n     * @throws NoSuchFieldException\n     * @throws IllegalAccessException\n     */\n    public static ClassLoader changeClassLoader() throws NoSuchFieldException, IllegalAccessException {\n\n        String extendlibs = \"extendlibs\";\n        return changeClassLoader(extendlibs);\n    }\n\n    /**\n     * loadCustomerDirectory  this allow the console compile java file which import extend classes;\n     */\n    private void loadCustomerDirectory() {\n\n        try {\n\n            File file = new File(extendlibs);\n            if (!file.exists() || !file.isDirectory()) {\n                return;\n            }\n            File[] files = file.listFiles(new FileFilter() {\n                @Override\n                public boolean accept(File pathname) {\n                    return StringUtils.endsWith(pathname.getName(), \".jar\");\n                }\n            });\n            if (files == null || files.length == 0) {\n                return;\n            }\n            URL[] urls = new URL[files.length];\n            int index = 0;\n\n            for (File jarFile : files) {\n                URL url = jarFile.toURI().toURL();\n                urls[index] = url;\n                jdkCompiler.addClassPath(jarFile);\n                index++;\n            }\n            extendClassLoader = new CustomerClassLoader(urls, this.getClass().getClassLoader());\n        } catch (MalformedURLException e) {\n            log.error(e.getMessage(), e);\n        }\n    }\n\n    /**\n     * load class in intance file\n     *\n     * @param instId\n     * @return\n     * @throws Exception\n     */\n    public <T> Class<T> loadHandlerClass(Long instId, Class<T> interfaceClass) throws Exception {\n\n        ZipFile zipFile;\n        String zipFileName = tacFileService.getLoadClassFilePath(instId);\n        File file = new File(zipFileName);\n\n        ClassLoader parent = null;\n        if (this.extendClassLoader == null) {\n            parent = this.getClass().getClassLoader();\n        } else {\n            parent = this.extendClassLoader;\n        }\n        ClassLoader clazzLoader = new CustomerClassLoader(file, parent);\n        zipFile = new ZipFile(file);\n        Enumeration<? extends ZipEntry> entries = zipFile.entries();\n\n        while (entries.hasMoreElements()) {\n            ZipEntry entry = entries.nextElement();\n            String entName = entry.getName();\n\n            if (entry.isDirectory() || !entName.endsWith(\".class\")) {\n                continue;\n            }\n\n            entName = entName.substring(0, entName.lastIndexOf('.'));\n\n            String className = StringUtils.replaceChars(entName, '/', '.');\n\n            Class<?> clazz = clazzLoader.loadClass(className);\n\n\n            if (Modifier.isAbstract(clazz.getModifiers())) {\n                continue;\n            }\n\n            if (interfaceClass.isAssignableFrom(clazz)) {\n                return (Class<T>)clazz;\n            }\n        }\n\n        return null;\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/code/CustomerClassLoader.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.code;\n\nimport java.io.File;\nimport java.net.MalformedURLException;\nimport java.net.URL;\nimport java.net.URLClassLoader;\n\n/**\n * the CustomerClassLoader\n */\npublic class CustomerClassLoader extends URLClassLoader {\n\n    static {\n\n        extClassLoader = CustomerClassLoader.getSystemClassLoader().getParent();\n    }\n\n    private static ClassLoader extClassLoader;\n\n\n    public CustomerClassLoader(URL[] urls) {\n        super(urls, CustomerClassLoader.class.getClassLoader());\n    }\n\n    public CustomerClassLoader(File file) throws MalformedURLException {\n        super(new URL[] {file.toURI().toURL()}, CustomerClassLoader.class.getClassLoader());\n    }\n\n    public CustomerClassLoader(URL[] urls, ClassLoader parent) {\n        super(urls, parent);\n    }\n\n    public CustomerClassLoader(File file, ClassLoader parent) throws MalformedURLException {\n        super(new URL[] {file.toURI().toURL()}, parent);\n    }\n\n    /**\n     *\n     * @param name\n     * @param resolve\n     * @return\n     * @throws ClassNotFoundException\n     *\n     * @see ClassLoader#loadClass(java.lang.String, boolean)\n     */\n    @Override\n    protected synchronized Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {\n\n        ClassLoader parent = this.getParent();\n\n        synchronized (getClassLoadingLock(name)) {\n            // First, check if the class has already been loaded\n            Class<?> c = findLoadedClass(name);\n            if (c == null) {\n                long t0 = System.nanoTime();\n                try {\n                    if (parent != null) {\n                        c = parent.loadClass(name);\n                    }\n                } catch (ClassNotFoundException e) {\n                    // ClassNotFoundException thrown if class not found\n                    // from the non-null parent class loader\n                }\n\n                if (c == null) {\n                    // If still not found, then invoke findClass in order\n                    // to find the class.\n                    long t1 = System.nanoTime();\n                    c = findClass(name);\n\n                    // this is the defining class loader; record the stats\n                    sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);\n                    sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);\n                    sun.misc.PerfCounter.getFindClasses().increment();\n                }\n            }\n            if (resolve) {\n                resolveClass(c);\n            }\n            return c;\n        }\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/code/SpringClassLoader.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.code;\n\nimport java.net.URL;\nimport java.net.URLClassLoader;\n\n/**\n * @author jinshuan.li 07/03/2018 10:18\n */\npublic class SpringClassLoader extends URLClassLoader {\n\n    public SpringClassLoader(URL[] urls, ClassLoader parent) {\n        super(urls, parent);\n    }\n\n    @Override\n    protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {\n        try {\n            return super.loadClass(name, resolve);\n        } catch (NoClassDefFoundError e) {\n            //  because we change the classloader , we should chaugh all exception here;\n            return null;\n        }\n\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/code/TacFileService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.code;\n\nimport com.alibaba.tac.engine.properties.TacDataPathProperties;\nimport com.google.common.collect.Lists;\nimport com.google.common.hash.Hashing;\nimport org.apache.commons.io.FileUtils;\nimport org.apache.commons.io.filefilter.DirectoryFileFilter;\nimport org.apache.commons.io.filefilter.FileFileFilter;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.FileCopyUtils;\n\nimport javax.annotation.Resource;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\nimport java.util.Collection;\nimport java.util.List;\n\n@Service\npublic class TacFileService {\n\n    @Resource\n    private TacDataPathProperties tacDataPathProperties;\n\n    public String getLoadClassFilePath(Long processID) {\n        String path;\n        String classloadPathPrefix = tacDataPathProperties.getClassLoadPathPrefix();\n\n        if (!classloadPathPrefix.endsWith(File.separator)) {\n            path = classloadPathPrefix + File.separator;\n        } else {\n            path = classloadPathPrefix;\n        }\n        path += processID + File.separator + processID + \".zip\";\n        return path;\n    }\n\n    public String getClassFileOutputPath(Long processID) {\n\n        return getClassFileOutputPath(String.valueOf(processID));\n    }\n\n    public String getClassFileOutputPath(String suffix) {\n        String path = \"\";\n\n        String outputPathPrefix = tacDataPathProperties.getOutputPathPrefix();\n\n        if (!outputPathPrefix.endsWith(File.separator)) {\n            path = outputPathPrefix + File.separator;\n        } else {\n            path = outputPathPrefix;\n        }\n        path += suffix;\n        return path;\n    }\n\n    public String getOutPutFilePath(Long processID) {\n\n        return getClassFileOutputPath(processID) + \".zip\";\n    }\n\n    public String getOutPutFilePath(String suffix) {\n\n        return getClassFileOutputPath(suffix) + \".zip\";\n    }\n\n    /**\n     *listAllFiles\n     *\n     * @param directory\n     * @return List\n     */\n    public static List<File> listAllFiles(File directory) {\n        Collection<File> files = FileUtils.listFiles(directory, FileFileFilter.FILE, DirectoryFileFilter.DIRECTORY);\n        return Lists.newArrayList(files);\n    }\n\n\n    /**\n     *\n     *\n     * @param file the file to delete\n     * @throws IOException if an I/O error occurs\n     * @see\n     */\n    public static void deleteRecursively(File file) throws IOException {\n        if (file.isDirectory()) {\n            FileUtils.deleteDirectory(file);\n            return ;\n        }\n        if (!file.delete()) {\n            throw new IOException(\"Failed to delete \" + file);\n        }\n    }\n\n    /**\n     * @param zipFile\n     * @return\n     * @throws IOException\n     */\n    public static byte[] getFileBytes(File zipFile) throws IOException {\n        FileInputStream inputStream = null;\n        inputStream = new FileInputStream(zipFile);\n        byte[] zipFileBytes = FileCopyUtils.copyToByteArray(inputStream);\n\n        return zipFileBytes;\n    }\n\n    /**\n     * @param data\n     * @return\n     */\n    public static String getMd5(byte[] data) {\n\n        String md5 = Hashing.md5().hashBytes(data).toString();\n\n        return md5;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/common/DefaultTacIDGenerator.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.common;\n\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\n\n/**\n * @author jinshuan.li 01/03/2018 13:10\n */\n@Service\npublic class DefaultTacIDGenerator implements TacIDGenerator {\n\n    @Resource(name = \"msInstIdCounter\")\n    private SequenceCounter msInstIdCounter;\n\n    @Override\n    public Long getNextId() {\n        return msInstIdCounter.incrementAndGet();\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/common/SequenceCounter.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.common;\n\n/**\n * @author jinshuan.li 2018/2/27 23:37  counter\n */\npublic interface SequenceCounter {\n\n    /**\n     * set value\n     * @param value\n     */\n    void set(long value);\n\n    /**\n     *get value\n     * @return\n     */\n    Long get();\n\n    /**\n     *\n     * incr and get\n     * @return\n     */\n    long incrementAndGet();\n\n    /**\n     *\n     * incr by a value\n     * @param delta\n     * @return\n     */\n    long increBy(long delta);\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/common/TacIDGenerator.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.common;\n\n/**\n * @author jinshuan.li 01/03/2018 13:09\n */\npublic interface TacIDGenerator {\n\n    /**\n     * get next id\n     *\n     * @return\n     */\n    Long getNextId();\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/common/redis/RedisSequenceCounter.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.common.redis;\n\nimport com.alibaba.tac.engine.common.SequenceCounter;\nimport com.alibaba.tac.engine.util.Bytes;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang3.StringUtils;\nimport org.springframework.dao.DataAccessException;\nimport org.springframework.data.redis.connection.RedisConnection;\nimport org.springframework.data.redis.core.RedisCallback;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.data.redis.core.ValueOperations;\nimport org.springframework.data.redis.serializer.RedisSerializer;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.PostConstruct;\nimport javax.annotation.Resource;\n\n/**\n * @author jinshuan.li 2018/3/1 07:35\n */\n@Slf4j\npublic class RedisSequenceCounter implements SequenceCounter {\n\n    /**\n     * see counterRedisTemplate's ValueSerializer  , the value will be convert to string ,then do incr\n     *\n     */\n    @Resource(name = \"counterRedisTemplate\")\n    private ValueOperations<String, String> valueOperations;\n\n    private String counterKey;\n\n    public RedisSequenceCounter(String counterKey) {\n\n        this.counterKey = counterKey;\n\n    }\n\n    @Override\n    public void set(long value) {\n\n        valueOperations.set(counterKey, String.valueOf(value));\n    }\n\n    @Override\n    public Long get() {\n\n        String s = valueOperations.get(counterKey);\n        if (StringUtils.isEmpty(s)) {\n            return null;\n        }\n        return Long.valueOf(s);\n\n    }\n\n    @Override\n    public long incrementAndGet() {\n\n        Long increment = valueOperations.increment(counterKey, 1);\n        if (increment != null) {\n            return increment;\n        }\n        return 0L;\n\n    }\n\n    @Override\n    public long increBy(long delta) {\n\n        Long increment = valueOperations.increment(counterKey, delta);\n        if (increment != null) {\n            return increment;\n        }\n        return 0L;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/compile/IJdkCompiler.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.compile;\n\nimport java.io.File;\nimport java.io.StringWriter;\n\n/**\n * @author jinshuan.li 12/02/2018 08:10\n */\npublic interface IJdkCompiler {\n\n    /**\n     *compile code , the output name is instId\n     * @param codeInfo\n     * @param compileInfo\n     * @return\n     * @throws Exception\n     */\n    boolean compile(InstCodeInfo codeInfo, StringWriter compileInfo) throws Exception;\n\n    /**\n     * compileWithMsCode, the output name is msCode\n     *\n     *\n     * @param codeInfo\n     * @param compileInfo\n     * @return\n     * @throws Exception\n     */\n    boolean compileWithMsCode(InstCodeInfo codeInfo, StringWriter compileInfo) throws Exception;\n\n    /**\n     * add compile class path\n     *\n     * @param file\n     */\n    void addClassPath(File file);\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/compile/InstCodeInfo.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.compile;\n\nimport lombok.Data;\n\nimport java.util.LinkedList;\nimport java.util.List;\n\n/**\n * java code info\n */\n@Data\npublic class InstCodeInfo {\n\n    /**\n     * java code list\n     */\n    List<JavaSourceCode> javaSourceCodes = new LinkedList<JavaSourceCode>();\n\n    /**\n     * inst Id\n     */\n    private Long instId;\n\n    /**\n     * inst Name\n     */\n    private String name;\n\n    /**\n     * inst ClassName\n     */\n    private String instClassName;\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/compile/JavaSourceCode.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.compile;\n\nimport lombok.Data;\n\n/**\n * java source code info\n */\n@Data\npublic class JavaSourceCode {\n\n    /**\n     *  class package name\n     */\n    private String packageName;\n    /**\n     *  class name without package name\n     */\n    private String className;\n    /**\n     *  the source content\n     */\n    private String source;\n    /**\n     *  the source file name\n     */\n    private String fileName;\n\n    public String getFullClassName() {\n        return this.getPackageName().trim() + \".\" + this.getClassName();\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/compile/JdkCompilerImpl.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.compile;\n\nimport com.alibaba.tac.engine.bootlaucher.BootJarLaucherUtils;\nimport com.alibaba.tac.engine.properties.TacDataPathProperties;\nimport com.alibaba.tac.engine.code.TacFileService;\nimport org.apache.commons.lang3.StringUtils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.beans.factory.InitializingBean;\n\nimport javax.annotation.PostConstruct;\nimport javax.annotation.Resource;\nimport javax.tools.JavaCompiler;\nimport javax.tools.JavaCompiler.CompilationTask;\nimport javax.tools.StandardJavaFileManager;\nimport javax.tools.StandardLocation;\nimport javax.tools.ToolProvider;\nimport java.io.File;\nimport java.io.FileFilter;\nimport java.io.StringWriter;\nimport java.net.URL;\nimport java.net.URLClassLoader;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\npublic class JdkCompilerImpl implements IJdkCompiler, InitializingBean {\n\n    private static final Logger LOG = LoggerFactory.getLogger(JdkCompilerImpl.class);\n\n    private static final List<String> OPTIONS = new ArrayList<String>();\n\n    private static final List<File> CLASSPATH = new ArrayList<File>();\n\n    static {\n        OPTIONS.add(\"-target\");\n        OPTIONS.add(\"1.8\");\n    }\n\n    @Resource\n    private TacDataPathProperties tacDataPathProperties;\n\n    @Resource\n    private TacFileService tacFileService;\n\n    public String sourcePathPrefix;\n    public String outputPathPrefix;\n    public String classLoadPathPrefix;\n    public String pkgPrefix;\n\n    @PostConstruct\n    public void init() {\n\n        this.sourcePathPrefix = tacDataPathProperties.getSourcePathPrefix();\n        this.outputPathPrefix = tacDataPathProperties.getOutputPathPrefix();\n        this.classLoadPathPrefix = tacDataPathProperties.getClassLoadPathPrefix();\n        this.pkgPrefix = tacDataPathProperties.getPkgPrefix();\n    }\n\n    @Override\n    public synchronized boolean compile(InstCodeInfo codeInfo, StringWriter compileInfo) throws Exception {\n\n        return this.compile(codeInfo, compileInfo, String.valueOf(codeInfo.getInstId()));\n    }\n\n    @Override\n    public synchronized boolean compileWithMsCode(InstCodeInfo codeInfo, StringWriter compileInfo) throws Exception {\n\n        return this.compile(codeInfo, compileInfo, codeInfo.getName());\n    }\n\n    @Override\n    public void addClassPath(File file) {\n        CLASSPATH.add(file);\n        LOG.debug(\"add compile class path:{}\", file.getAbsolutePath());\n    }\n\n    private boolean compile(InstCodeInfo codeInfo, StringWriter compileInfo, String outputName) throws Exception {\n        long start = 0;\n        if (LOG.isInfoEnabled()) {\n            start = System.currentTimeMillis();\n        }\n        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();\n        StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);\n\n        File[] outputs = new File[] {new File(tacFileService.getClassFileOutputPath(outputName))};\n        for (File file : outputs) {\n            if (!file.exists()) {\n                file.mkdirs();\n            } else {\n                TacFileService.deleteRecursively(file);\n                file.mkdirs();\n            }\n        }\n\n        LOG.debug(\"compile classpath.  size:{}  CLASS-PATH:{}\", CLASSPATH.size(), CLASSPATH);\n\n        fileManager.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(outputs));\n        fileManager.setLocation(StandardLocation.CLASS_PATH, CLASSPATH);\n        List<TacJavaFileObject> fileObjects = new ArrayList<TacJavaFileObject>();\n        for (JavaSourceCode unit : codeInfo.getJavaSourceCodes()) {\n            TacJavaFileObject sourceObject = new TacJavaFileObject(unit.getFullClassName(), unit.getSource());\n            fileObjects.add(sourceObject);\n        }\n        CompilationTask task = compiler.getTask(compileInfo, fileManager, null, OPTIONS, null, fileObjects);\n        Boolean resultSuccess = task.call();\n        if (resultSuccess == null || !resultSuccess) {\n            return false;\n        }\n        fileManager.close();\n        if (LOG.isInfoEnabled()) {\n            LOG.info(\"compile complete . name :{}  instClassName:{} cost: {} resultSucess:{} \", codeInfo.getName(),\n                codeInfo.getInstClassName(), (System.currentTimeMillis() - start), resultSuccess);\n        }\n        return true;\n    }\n\n    @Override\n    public void afterPropertiesSet() throws Exception {\n        initTacDict();\n\n        LOG.debug(\"init class path:\\n\");\n        ClassLoader classLoader = this.getClass().getClassLoader();\n        while (classLoader != null) {\n            this.addClassLoaderClassPath(classLoader);\n            classLoader = classLoader.getParent();\n        }\n\n        addBootLibJars();\n    }\n\n    /**\n     * add boot lib jars to the compile classpath\n     */\n    private void addBootLibJars() {\n\n        File tempUnpackFolder = BootJarLaucherUtils.getTempUnpackFolder();\n        if (tempUnpackFolder != null && tempUnpackFolder.isDirectory() && tempUnpackFolder.exists()) {\n\n            File[] files = tempUnpackFolder.listFiles(new FileFilter() {\n                @Override\n                public boolean accept(File pathname) {\n                    return StringUtils.endsWith(pathname.getName(), \".jar\");\n                }\n            });\n            for (File file : files) {\n                CLASSPATH.add(file);\n                LOG.debug(\"add compile class path:{} \", file.getPath());\n            }\n        }\n    }\n\n    /**\n     * @param classLoader\n     */\n    private void addClassLoaderClassPath(ClassLoader classLoader) {\n        ClassLoader loader = classLoader;\n\n        if (loader instanceof URLClassLoader) {\n            URLClassLoader urlClassLoader = (URLClassLoader)loader;\n            URL[] urls = urlClassLoader.getURLs();\n            for (URL url : urls) {\n                File file = new File(url.getFile());\n                if (file.exists()) {\n                    CLASSPATH.add(file);\n                    LOG.debug(\"add compile class path:{} \", file.getPath());\n                }\n\n            }\n        } else {\n            LOG.error(\"need URLClassLoader!!\");\n        }\n    }\n\n    private void initTacDict() {\n\n\n        // class compile output directory\n\n\n        File outputPathDic = new File(this.outputPathPrefix);\n\n        if (!outputPathDic.exists()) {\n            outputPathDic.mkdirs();\n        }\n        /**\n         * class load direcotry\n         */\n        File classLoadDic = new File(this.classLoadPathPrefix);\n        if (!classLoadDic.exists()) {\n            classLoadDic.mkdirs();\n        }\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/compile/TacJavaFileObject.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.compile;\n\nimport javax.tools.SimpleJavaFileObject;\nimport java.io.IOException;\nimport java.net.URI;\n\npublic class TacJavaFileObject extends SimpleJavaFileObject {\n\n    private String javaCode;\n\n    protected TacJavaFileObject(String name, String content) {\n        super(URI.create(\"file:///\" + name.replace('.', '/')\n            + Kind.SOURCE.extension), Kind.SOURCE);\n        this.javaCode = content;\n    }\n\n    @Override\n    public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {\n        return javaCode;\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/event/domain/AbstractMsEvent.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.event.domain;\n\nimport lombok.Data;\nimport org.springframework.context.ApplicationEvent;\n\nimport java.io.Serializable;\n\n/**\n * @author jinshuan.li 26/02/2018 15:38\n * <p>\n * the base event class\n */\n@Data\npublic abstract class AbstractMsEvent extends ApplicationEvent implements Serializable {\n\n    private static final long serialVersionUID = 3861931814219403935L;\n\n    /**\n     * msCode\n     */\n    private String msCode;\n\n    public AbstractMsEvent() {\n\n        super(System.currentTimeMillis());\n\n    }\n\n    public AbstractMsEvent(String msCode) {\n        super(System.currentTimeMillis());\n        this.msCode = msCode;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/event/domain/GetAllMsEvent.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.event.domain;\n\nimport lombok.Data;\n\nimport java.util.List;\n\n/**\n * @author jinshuan.li 26/02/2018 15:44\n */\n@Data\npublic class GetAllMsEvent extends AbstractMsEvent {\n\n    private List<String> msCodes;\n\n\n    public GetAllMsEvent(){\n\n    }\n\n    public GetAllMsEvent(List<String> msCodes) {\n        this.msCodes = msCodes;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/event/domain/MsOfflineEvent.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.event.domain;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport lombok.Data;\n\n/**\n * @author jinshuan.li 27/02/2018 12:23\n */\n@Data\npublic class MsOfflineEvent extends AbstractMsEvent {\n\n    private TacInst tacInst;\n\n    public MsOfflineEvent(TacInst tacInst) {\n        super(tacInst.getMsCode());\n        this.tacInst = tacInst;\n\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/event/domain/MsPublishEvent.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.event.domain;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport lombok.Data;\n\n/**\n * @author jinshuan.li 26/02/2018 15:45\n */\n@Data\npublic class MsPublishEvent extends AbstractMsEvent {\n\n    private TacInst tacInst;\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/event/domain/MsReceivePublishEvent.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.event.domain;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport lombok.Data;\n\n/**\n * @author jinshuan.li 26/02/2018 20:18\n */\n@Data\npublic class MsReceivePublishEvent extends AbstractMsEvent {\n\n    public MsReceivePublishEvent(TacInst tacInst) {\n        this.tacInst = tacInst;\n    }\n\n    /**\n     * the inst info\n     */\n    private TacInst tacInst;\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/git/GitRepoService.java",
    "content": "package com.alibaba.tac.engine.git;\n\nimport com.alibaba.tac.engine.properties.TacGitlabProperties;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang3.StringUtils;\nimport org.eclipse.jgit.api.*;\nimport org.eclipse.jgit.lib.Ref;\nimport org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.io.File;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\n/**\n * @author jinshuan.li 06/05/2018 14:27\n */\n@Slf4j\n@Service\npublic class GitRepoService {\n\n    private final static String REMOTE_ORIGIN = \"refs/remotes/origin/\";\n\n    private Pattern gitPattern = Pattern.compile(\"git@(?<hostName>[^:]+)(?<port>:[0-9]+:)?:(?<tail>.+)\");\n\n    @Resource\n    private TacGitlabProperties tacGitlabProperties;\n\n    /**\n     * pull instance code\n     *\n     * @param gitURL\n     * @param branch\n     * @param projectName\n     * @return\n     */\n    public String pullInstanceCode(String gitURL, String projectName, String branch) {\n\n        String httpURL = change2Http(gitURL);\n\n        String groupName = tacGitlabProperties.getGroupName();\n\n        if (!localRepoExists(groupName, projectName, branch)) {\n            cloneRepo(groupName, projectName, branch, httpURL);\n        }\n\n        // 拉分支数据\n\n        return pullRepo(groupName, projectName, branch);\n\n    }\n\n    /**\n     * 修改为http链接\n     *\n     * @param gitURL\n     * @return\n     */\n    private String change2Http(String gitURL) {\n\n        String realURL = gitURL;\n        if (StringUtils.startsWithIgnoreCase(gitURL, \"git@\")) {\n            Matcher matcher = gitPattern.matcher(gitURL);\n\n            if (!matcher.matches()) {\n\n                throw new IllegalStateException(\"invalid git url\" + gitURL);\n\n            }\n\n            String hostName = matcher.group(\"hostName\");\n            String port = matcher.group(\"port\");\n            String tail = matcher.group(\"tail\");\n\n            if (StringUtils.isEmpty(port)) {\n                realURL = String.format(\"http://%s/%s\", hostName, tail);\n            } else {\n                realURL = String.format(\"http://%s:%s/%s\", hostName, port, tail);\n            }\n\n        }\n\n        return realURL;\n    }\n\n    /**\n     * 拉取代码数据\n     *\n     * @param groupName\n     * @param projectName\n     * @param branch\n     */\n    private String pullRepo(String groupName, String projectName, String branch) {\n\n        Git localGit = null;\n        String localRepoDir = this.getLocalPath(groupName, projectName, branch);\n        PullResult pullResult = null;\n        try {\n            localGit = Git.open(new File(localRepoDir));\n            PullCommand pullCommand = localGit.pull();\n\n            pullCommand.setRemote(\"origin\").setCredentialsProvider(\n                new UsernamePasswordCredentialsProvider(tacGitlabProperties.getUserName(),\n                    tacGitlabProperties.getPassword())).setTimeout(30);\n\n            pullResult = pullCommand.call();\n            String header = localGit.getRepository().getBranch();\n            //如果当前分支header引用和branch分支不一致，切换分支\n            if (!branch.equals(header)) {\n                //检测当前分支是否存在，不存在，返回异常\n                Ref remoteRef = localGit.getRepository().exactRef(REMOTE_ORIGIN + branch);\n                if (null == remoteRef) {\n                    log.error(\"[Git Refresh Source] specified branch {} remote origin not exist.\", branch);\n                    throw new IllegalStateException(\"remote origin not exist \" + branch);\n                }\n                localGit.checkout().setForce(true).setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK)\n                    .setStartPoint(\n                        REMOTE_ORIGIN + branch).setName(branch).call();\n            }\n\n        } catch (Exception e) {\n\n            log.error(\"[Git Refresh Source] pull result error  path:{} {}\", localRepoDir, e.getMessage(), e);\n\n            throw new IllegalStateException(\"pull source failed \" + e.getMessage());\n        }\n        if (null == pullResult || !pullResult.isSuccessful()) {\n            log.error(\"[Git Refresh Source] pull result failed\");\n            throw new IllegalStateException(\"pull source failed \" + localRepoDir);\n        }\n\n        return localRepoDir;\n\n    }\n\n    /**\n     * clone 代码仓库\n     *\n     * @param groupName\n     * @param projectName\n     * @param branch\n     */\n    private String cloneRepo(String groupName, String projectName, String branch, String gitURL) {\n\n        String remoteURL = gitURL;\n\n        String localPath = getLocalPath(groupName, projectName, branch);\n\n        CloneCommand cloneCommand = Git.cloneRepository().setURI(remoteURL).setBranch(branch).setDirectory(\n            new File(localPath)).setTimeout(30);\n        Git git = null;\n        cloneCommand.setCredentialsProvider(new UsernamePasswordCredentialsProvider(tacGitlabProperties.getUserName(),\n            tacGitlabProperties.getPassword()));\n\n        try {\n            git = cloneCommand.call();\n\n            // 取分支\n            String existBranch = git.getRepository().getBranch();\n            if (!StringUtils.equals(branch, existBranch)) {\n                throw new IllegalStateException(String.format(\"branch %s not exist\", branch));\n            }\n        } catch (Exception e) {\n            log.error(\"[Git Refresh Source] clone repository error . remote:{} {}\", remoteURL, e.getMessage(), e);\n\n            throw new IllegalStateException(\"clone repository error .\" + e.getMessage());\n        }\n\n        return localPath;\n    }\n\n    /**\n     * 本地数据是否存在\n     *\n     * @param groupName\n     * @param projectName\n     * @param branch\n     * @return\n     */\n    public Boolean localRepoExists(String groupName, String projectName, String branch) {\n\n        File file = new File(getLocalPath(groupName, projectName, branch) + \".git\");\n\n        if (file.exists()) {\n            return true;\n        }\n        return false;\n    }\n\n    /**\n     * 本地代码路径\n     *\n     * @param groupName\n     * @param projectName\n     * @param branch\n     * @return\n     */\n    private String getLocalPath(String groupName, String projectName, String branch) {\n\n        StringBuilder localRepoDir = new StringBuilder(tacGitlabProperties.getBasePath());\n        localRepoDir.append(File.separator).append(groupName).append(File.separator).append(projectName).append(\n            File.separator).append(branch).append(File.separator);\n\n        return localRepoDir.toString();\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/inst/domain/TacInst.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.inst.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\n\n/**\n * The tac intance class\n */\n@Data\npublic class TacInst implements Serializable {\n\n    private static final long serialVersionUID = -7830333085387154296L;\n\n    public static final Integer STATUS_NEW = 0;\n\n    public static final Integer STATUS_PRE_PUBLISH = 1;\n\n    public static final Integer STATUS_PUBLISH = 2;\n\n\n    /**\n     * intanceId\n     */\n    private long id;\n\n    /**\n     * name\n     */\n    private String name;\n\n    /**\n     * the service code\n     */\n    private String msCode;\n\n    /**\n     *  data sign\n     */\n    private String jarVersion;\n\n    /**\n     * status\n     */\n    private Integer status;\n\n    /**\n     * prePublish sign\n     */\n    private String prePublishJarVersion;\n\n    /**\n     *  prePublish status\n     */\n    private Integer prePublishStatus;\n\n    /**\n     * gitBranch\n     */\n    private String gitBranch;\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/inst/domain/TacInstStatus.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.inst.domain;\n\nimport lombok.Getter;\n\n/**\n * @author jinshuan.li 28/02/2018 13:27\n */\npublic enum TacInstStatus {\n\n    /**\n     * invalid\n     */\n    INVALID(-1),\n\n    /**\n     * normal\n     */\n    NORMAL(0);\n\n    private TacInstStatus(int code) {\n        this.code = code;\n    }\n\n    @Getter\n    private Integer code;\n\n    public Integer code() {\n        return code;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/inst/domain/TacInstanceInfo.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.inst.domain;\n\nimport com.alibaba.tac.sdk.handler.TacHandler;\nimport lombok.Data;\n\nimport java.io.Serializable;\n\n/**\n * @author jinshuan.li 12/02/2018 17:28\n */\n@Data\npublic class TacInstanceInfo implements Serializable{\n\n    private static final long serialVersionUID = 6433864847735515082L;\n    /**\n     *  instanceId\n     */\n    private long id;\n\n    /**\n     * intance data sign\n     *\n     */\n    private String jarVersion;\n\n    /**\n     * the tac handler class\n     */\n    private TacHandler tacHandler;\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/inst/service/DevMsInstFileService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.inst.service;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.code.TacFileService;\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.io.File;\nimport java.io.IOException;\n\n/**\n * @author jinshuan.li 27/02/2018 20:24  handle the inst file in dev client\n */\n@Slf4j\n@Service\npublic class DevMsInstFileService implements IMsInstFileService {\n    @Override\n    public byte[] getInstanceFile(long instId) {\n\n        return getInstanceFile(String.valueOf(instId));\n    }\n\n    @Resource\n    private TacFileService tacFileService;\n\n    public byte[] getInstanceFile(String msCode){\n\n        String zipFileName = tacFileService.getOutPutFilePath(msCode);\n\n        final File zipFile = new File(zipFileName);\n\n        byte[] zipFileBytes = null;\n        if (!zipFile.exists()) {\n            return zipFileBytes;\n        }\n\n        try {\n            zipFileBytes = TacFileService.getFileBytes(zipFile);\n        } catch (IOException e) {\n\n            log.error(e.getMessage(), e);\n            return null;\n        }\n        return zipFileBytes;\n    }\n\n    @Override\n    public Boolean saveInstanceFile(TacInst tacInst, byte[] data) {\n        throw new UnsupportedOperationException();\n    }\n\n    /**\n     * get file data in filePath\n     *\n     * @param filePath\n     * @return\n     */\n    public byte[] getInstanceFileData(String filePath) {\n\n        byte[] zipFileBytes = null;\n        try {\n            final File zipFile = new File(filePath);\n            zipFileBytes = TacFileService.getFileBytes(zipFile);\n        } catch (IOException e) {\n\n            log.error(e.getMessage(), e);\n            return null;\n        }\n        return zipFileBytes;\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/inst/service/IMsInstFileService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.inst.service;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\n\n/**\n * @author jinshuan.li 12/02/2018 17:46\n */\npublic interface IMsInstFileService {\n\n    /**\n     * get inst file data\n     *\n     * @param instId\n     * @return\n     */\n    byte[] getInstanceFile(long instId);\n\n    /**\n     * save inst file data\n     *\n     * @param tacInst\n     * @return\n     */\n    Boolean saveInstanceFile(TacInst tacInst, byte[] data);\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/inst/service/IMsInstService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.inst.service;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\n\nimport java.util.List;\n\n/**\n * @author jinshuan.li 12/02/2018 17:14\n */\npublic interface IMsInstService {\n\n    /**\n     * get all tac instance\n     *\n     * @return\n     */\n    List<TacInst> getAllTacMsInsts();\n\n    /**\n     * get single instance\n     *\n     * @param msInstId\n     * @return\n     */\n    TacInst getTacMsInst(Long msInstId);\n\n    /**\n     * create instance\n     *\n     * @param tacInst\n     * @return\n     */\n    TacInst createTacMsInst(TacInst tacInst);\n\n    /**\n     * update instance\n     *\n     * @param instId\n     * @param tacInst\n     * @return\n     */\n    Boolean updateTacMsInst(Long instId, TacInst tacInst);\n\n    /**\n     * remove instance\n     *\n     * @param instId\n     * @return\n     */\n    Boolean removeMsInst(Long instId);\n\n    /**\n     * getMsInsts\n     * @param code\n     * @return\n     */\n    List<TacInst> getMsInsts(String code);\n\n    /**\n     * create default instance\n     *\n     * @param msCode\n     * @param name\n     * @param jarVersion\n     * @return\n     */\n    default TacInst createTacMsInst(String msCode, String name, String jarVersion) {\n        TacInst tacInst = new TacInst();\n        tacInst.setJarVersion(jarVersion);\n        tacInst.setMsCode(msCode);\n        tacInst.setName(msCode);\n        return this.createTacMsInst(tacInst);\n    }\n\n    /**\n     * create git instance\n     *\n     * @param msCode\n     * @param name\n     * @param branch\n     * @return\n     */\n    default TacInst createGitTacMsInst(String msCode, String name, String branch) {\n\n        TacInst tacInst = new TacInst();\n        tacInst.setGitBranch(branch);\n        tacInst.setMsCode(msCode);\n        tacInst.setName(name);\n        return this.createTacMsInst(tacInst);\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/inst/service/LocalMsInstFileService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.inst.service;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.code.TacFileService;\nimport com.google.common.io.Files;\nimport lombok.extern.slf4j.Slf4j;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.FileCopyUtils;\n\nimport javax.annotation.Resource;\nimport java.io.File;\nimport java.io.IOException;\n\n/**\n * @author jinshuan.li 12/02/2018 18:14     handle the inst file in container\n */\n@Slf4j\n@Service\npublic class LocalMsInstFileService implements IMsInstFileService {\n\n    private static Logger LOGGER = LoggerFactory.getLogger(LocalMsInstFileService.class);\n\n    @Resource\n    private TacFileService tacFileService;\n\n    @Override\n    public byte[] getInstanceFile(long instId) {\n\n        String zipFileName = tacFileService.getLoadClassFilePath(instId);\n\n        final File zipFile = new File(zipFileName);\n\n        byte[] zipFileBytes = null;\n        if (!zipFile.exists()) {\n            return zipFileBytes;\n        }\n\n        try {\n            zipFileBytes = TacFileService.getFileBytes(zipFile);\n        } catch (IOException e) {\n\n            log.error(e.getMessage(), e);\n            return null;\n        }\n\n        return zipFileBytes;\n\n    }\n\n    @Override\n    public Boolean saveInstanceFile(TacInst tacInst, byte[] data) {\n\n        // 文件存在删除\n\n        try {\n            Long instId = tacInst.getId();\n\n            File zipOutFile = new File(tacFileService.getLoadClassFilePath(instId));\n\n            if (zipOutFile.exists()) {\n                boolean deleteResult = zipOutFile.delete();\n                LOGGER.debug(\"TacInstanceLoader.loadTacHandler,instId:{} exists,delete result {}\", instId,\n                    deleteResult);\n            } else {\n                final String saveFileName = tacFileService.getLoadClassFilePath(instId);\n                LOGGER.debug(\"TacInstanceLoader.loadTacHandler,saveFileName:{} \", saveFileName);\n                Files.createParentDirs(new File(saveFileName));\n                LOGGER.debug(\"TacInstanceLoader.loadTacHandler,createParentDirs success\");\n            }\n            zipOutFile.createNewFile();\n            LOGGER.debug(\"TacInstanceLoader.loadTacHandler,createNewFile success \" + zipOutFile.getAbsolutePath());\n            FileCopyUtils.copy(data, zipOutFile);\n            LOGGER.debug(\"TacInstanceLoader.loadTacHandler,createNewFile copy success\");\n\n            return true;\n        } catch (Exception e) {\n\n            throw new IllegalStateException(e.getMessage(), e);\n        }\n\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/inst/service/redis/RedisMsInstFileService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.inst.service.redis;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.service.IMsInstFileService;\nimport com.alibaba.tac.engine.properties.TacRedisConfigProperties;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang3.StringUtils;\nimport org.springframework.dao.DataAccessException;\nimport org.springframework.data.redis.connection.RedisConnection;\nimport org.springframework.data.redis.core.RedisCallback;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.data.redis.core.ValueOperations;\nimport org.springframework.data.redis.serializer.RedisSerializer;\n\nimport javax.annotation.PostConstruct;\nimport javax.annotation.Resource;\n\n/**\n * @author jinshuan.li 2018/3/1 07:57\n */\n@Slf4j\npublic class RedisMsInstFileService implements IMsInstFileService {\n\n    @Resource(name = \"redisTemplate\")\n    private RedisTemplate<String, byte[]> redisTemplate;\n\n    @Resource(name = \"redisTemplate\")\n    private ValueOperations<String, JSONObject> fileDataMetaOperations;\n\n    @Resource\n    private TacRedisConfigProperties redisConfig;\n\n    private RedisSerializer keySerializer;\n\n    private Boolean prePublish = false;\n\n    @PostConstruct\n    public void init() {\n\n        keySerializer = redisTemplate.getKeySerializer();\n\n    }\n\n    public RedisMsInstFileService(Boolean prePublish) {\n        this.prePublish = prePublish;\n    }\n\n    @Override\n    public byte[] getInstanceFile(long instId) {\n\n        String dataPath = getDataPath(instId, null);\n\n        JSONObject jsonObject = fileDataMetaOperations.get(dataPath);\n        if (jsonObject == null) {\n            return null;\n        }\n        String jarVersion = jsonObject.getString(\"jarVersion\");\n\n        dataPath = getDataPath(instId, jarVersion);\n\n        String finalDataPath = dataPath;\n\n        // the bytes type should get the raw data, don't serializ it\n        byte[] bytes = redisTemplate.execute(new RedisCallback<byte[]>() {\n            @Override\n            public byte[] doInRedis(RedisConnection connection) throws DataAccessException {\n                return connection.get(keySerializer.serialize(finalDataPath));\n            }\n        });\n\n        return bytes;\n    }\n\n    @Override\n    public Boolean saveInstanceFile(TacInst tacInst, byte[] data) {\n\n        String jarVersion;\n        if (this.prePublish) {\n            jarVersion = tacInst.getPrePublishJarVersion();\n        } else {\n            jarVersion = tacInst.getJarVersion();\n        }\n\n        if (StringUtils.isEmpty(jarVersion)) {\n            throw new IllegalArgumentException(\"jarVersion\");\n        }\n        long instId = tacInst.getId();\n        if (instId <= 0) {\n            throw new IllegalArgumentException(\"instId\");\n        }\n\n        if (data == null) {\n            throw new IllegalArgumentException(\"data is null\");\n        }\n        String dataPath = getDataPath(instId, null);\n        JSONObject metaData = new JSONObject();\n        metaData.put(\"jarVersion\", jarVersion);\n        fileDataMetaOperations.set(dataPath, metaData);\n\n        dataPath = getDataPath(instId, jarVersion);\n\n        String finalDataPath = dataPath;\n        redisTemplate.execute(new RedisCallback<Object>() {\n            @Override\n            public Object doInRedis(RedisConnection connection) throws DataAccessException {\n\n                connection.set(keySerializer.serialize(finalDataPath), data);\n\n                return null;\n            }\n        });\n\n        return true;\n\n    }\n\n    /**\n     * get data path\n     *\n     * @param instId\n     * @param jarVersion\n     * @return\n     */\n    private String getDataPath(Long instId, String jarVersion) {\n\n        String dataPathPrefix = redisConfig.getDataPathPrefix();\n        if (this.prePublish) {\n            dataPathPrefix += \".prepublish.\";\n        }\n        if (StringUtils.isEmpty(jarVersion)) {\n            return String.format(\"%s.%d\", dataPathPrefix, instId);\n        }\n        return String.format(\"%s.%d.%s\", dataPathPrefix, instId,\n            jarVersion);\n\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/inst/service/redis/RedisMsInstService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.inst.service.redis;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.tac.engine.common.redis.RedisSequenceCounter;\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.service.IMsInstService;\nimport com.alibaba.tac.engine.properties.TacRedisConfigProperties;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang3.StringUtils;\nimport org.springframework.data.redis.core.HashOperations;\nimport org.springframework.data.redis.core.RedisTemplate;\n\nimport javax.annotation.Resource;\nimport java.util.List;\n\n/**\n * @author jinshuan.li 2018/3/1 07:58\n */\n@Slf4j\npublic class RedisMsInstService implements IMsInstService {\n\n    /**\n     * 计数器\n     */\n    @Resource(name = \"msInstIdCounter\")\n    private RedisSequenceCounter sequenceCounter;\n\n    @Resource\n    private TacRedisConfigProperties tacRedisConfigProperties;\n\n    @Resource(name = \"redisTemplate\")\n    private RedisTemplate<String, JSONObject> redisTemplate;\n\n    @Resource(name = \"redisTemplate\")\n    HashOperations<String, String, TacInst> hashOperations;\n\n    @Override\n    public List<TacInst> getAllTacMsInsts() {\n\n        return hashOperations.values(getMainKey());\n\n    }\n\n    @Override\n    public TacInst getTacMsInst(Long msInstId) {\n\n        TacInst data = hashOperations.get(getMainKey(), String.valueOf(msInstId));\n        if (data != null) {\n            return data;\n        }\n        return null;\n    }\n\n    @Override\n    public TacInst createTacMsInst(TacInst tacInst) {\n\n        // 校验参数\n        checkInst(tacInst);\n\n        long msInstId = sequenceCounter.incrementAndGet();\n        if (msInstId <= 0) {\n            throw new IllegalStateException(\"error on get id \");\n        }\n\n        tacInst.setId(msInstId);\n\n        hashOperations.putIfAbsent(getMainKey(), String.valueOf(tacInst.getId()), tacInst);\n\n        hashOperations.put(getMainKey() + tacInst.getMsCode(), String.valueOf(tacInst.getId()), tacInst);\n\n        return tacInst;\n    }\n\n    @Override\n    public Boolean updateTacMsInst(Long instId, TacInst tacInst) {\n\n        tacInst.setId(instId);\n\n        hashOperations.put(getMainKey(), String.valueOf(instId), tacInst);\n\n        hashOperations.put(getMainKey() + tacInst.getMsCode(), String.valueOf(tacInst.getId()), tacInst);\n\n        return true;\n    }\n\n    @Override\n    public Boolean removeMsInst(Long instId) {\n        String key = String.valueOf(instId);\n\n        TacInst tacInst = hashOperations.get(getMainKey(), key);\n        if (tacInst != null) {\n            hashOperations.delete(getMainKey() + tacInst.getMsCode(), key);\n        }\n        hashOperations.delete(getMainKey(), key);\n\n        return true;\n    }\n\n    @Override\n    public List<TacInst> getMsInsts(String code) {\n\n        return hashOperations.values(getMainKey() + code);\n    }\n\n    private void checkInst(TacInst tacInst) {\n\n        if (StringUtils.isEmpty(tacInst.getJarVersion()) && StringUtils.isEmpty(tacInst.getGitBranch())) {\n            throw new IllegalArgumentException(\"jar version or branch is empty\");\n        }\n        String msCode = tacInst.getMsCode();\n        if (StringUtils.isEmpty(msCode)) {\n            throw new IllegalArgumentException(\"msCode\");\n        }\n    }\n\n    private String getMainKey() {\n\n        return tacRedisConfigProperties.getMsInstMetaDataPath();\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/domain/TacMs.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.domain;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * The tac msService calss\n */\n@Data\npublic class TacMs implements Serializable {\n\n    private static final long serialVersionUID = 6396890479297204348L;\n    /**\n     * ms id\n     */\n    private long id;\n\n    /**\n     * mscode\n     */\n    private String code;\n    /**\n     * name\n     */\n    private String name;\n\n\n    /**\n     * inst list\n     */\n    private List<TacInst> instList = new ArrayList<TacInst>();\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/domain/TacMsDO.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\n\n/**\n * @author jinshuan.li 28/02/2018 13:25\n */\n@Data\npublic class TacMsDO implements Serializable {\n\n    private static final long serialVersionUID = 6723105954964294367L;\n\n\n    /**\n     * id\n     */\n    private Long id;\n\n    /**\n     * code\n     */\n    private String code;\n    /**\n     * name\n     */\n    private String name;\n\n    /**\n     * status\n     */\n    private Integer status = TacMsStatus.NORMAL.code();\n\n    /**\n     * published inst id\n     */\n    private Long publishedInstId;\n\n    /**\n     *\n     */\n    private Boolean gitSupport;\n\n    /**\n     *\n     */\n    private String gitRepo;\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/domain/TacMsPublishMeta.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.domain;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.properties.TacMsConstants;\nimport lombok.Data;\n\nimport java.io.Serializable;\n\n/**\n * @author jinshuan.li 27/02/2018 13:28\n *\n * the publish meta data\n */\n@Data\npublic class TacMsPublishMeta implements Serializable {\n    private static final long serialVersionUID = 7774540294768819287L;\n\n    private TacInst tacInst;\n\n    private Integer status = TacMsConstants.INST_STATUS_ONLINE;\n\n    public TacMsPublishMeta() {\n    }\n\n    public TacMsPublishMeta(TacInst tacInst, Integer status) {\n        this.tacInst = tacInst;\n        this.status = status;\n    }\n\n    public TacMsPublishMeta(TacInst tacInst) {\n        this.tacInst = tacInst;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/domain/TacMsStatus.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.domain;\n\nimport lombok.Getter;\n\n/**\n * @author jinshuan.li 28/02/2018 13:27\n */\npublic enum TacMsStatus {\n    /**\n     * invalid\n     */\n    INVALID(-1),\n\n    /**\n     * normal\n     */\n    NORMAL(0);\n\n    private TacMsStatus(int code) {\n        this.code = code;\n    }\n\n    @Getter\n    private Integer code;\n\n    public Integer code() {\n        return code;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/service/AbstractDefaultMsPublisher.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.service;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.service.DevMsInstFileService;\n\nimport javax.annotation.Resource;\nimport java.text.MessageFormat;\n\n/**\n * @author jinshuan.li 01/03/2018 15:22\n */\npublic abstract class AbstractDefaultMsPublisher implements IMsPublisher {\n\n    @Resource\n    private DevMsInstFileService devMsInstFileService;\n\n    @Override\n    public Boolean publish(TacInst tacInst) {\n\n        long instId = tacInst.getId();\n\n        //1.1  get data\n        byte[] instanceFile = devMsInstFileService.getInstanceFile(instId);\n\n        if (instanceFile == null) {\n            throw new IllegalArgumentException(\n                MessageFormat.format(\"can't find local instance file . instId {0}\", instId));\n        }\n\n        //1.2 check sign\n\n        checkSign(tacInst, instanceFile);\n\n        return this.publish(tacInst, instanceFile);\n    }\n\n    @Override\n    public Boolean prePublish(TacInst tacInst, byte[] data) {\n        return null;\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/service/DefaultMsEventHandlers.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.service;\n\nimport com.alibaba.tac.engine.event.domain.GetAllMsEvent;\nimport com.alibaba.tac.engine.event.domain.MsOfflineEvent;\nimport com.alibaba.tac.engine.event.domain.MsReceivePublishEvent;\nimport com.alibaba.tac.engine.service.TacInstanceContainerService;\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.context.ApplicationEventPublisher;\nimport org.springframework.context.ApplicationEventPublisherAware;\nimport org.springframework.context.ApplicationListener;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.core.Ordered;\nimport org.springframework.core.annotation.Order;\n\nimport javax.annotation.PostConstruct;\nimport javax.annotation.Resource;\n\n/**\n * @author jinshuan.li 26/02/2018 20:13\n * <p>\n * 此处设置最高优先级\n */\n@Slf4j\n@Configuration\n@Order(Ordered.HIGHEST_PRECEDENCE)\npublic class DefaultMsEventHandlers implements ApplicationEventPublisherAware {\n\n    @Resource\n    private TacInstanceContainerService tacInstanceContainerService;\n\n    private ApplicationEventPublisher applicationEventPublisher;\n\n    @PostConstruct\n    public void init() {\n\n    }\n\n    @Bean\n    public ApplicationListener<GetAllMsEvent> getAllMsEventApplicationListener() {\n\n        return new ApplicationListener<GetAllMsEvent>() {\n            @Override\n            public void onApplicationEvent(GetAllMsEvent event) {\n\n            }\n        };\n    }\n\n    @Bean\n    public ApplicationListener<MsReceivePublishEvent> msReceivePublishEventApplicationListener() {\n\n        return new ApplicationListener<MsReceivePublishEvent>() {\n            @Override\n            public void onApplicationEvent(MsReceivePublishEvent event) {\n                try {\n                    log.info(\"handle  MsReceivePublishEvent {}\", event);\n\n                    tacInstanceContainerService.loadTacInstance(event.getTacInst());\n                } catch (Exception e) {\n                    log.error(\"load instance error tacInst:{} {}\", event.getTacInst(), e.getMessage(), e);\n                    throw new IllegalStateException(\"load instance error \" + e.getMessage());\n                }\n            }\n        };\n    }\n\n    @Bean\n    public ApplicationListener<MsOfflineEvent> msOfflineEventApplicationListener() {\n\n        return new ApplicationListener<MsOfflineEvent>() {\n            @Override\n            public void onApplicationEvent(MsOfflineEvent event) {\n\n                String msCode = event.getMsCode();\n\n                tacInstanceContainerService.offlineMs(msCode);\n            }\n        };\n    }\n\n    public ApplicationEventPublisher getPublisher() {\n        return applicationEventPublisher;\n    }\n\n    @Override\n    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {\n\n        this.applicationEventPublisher = applicationEventPublisher;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/service/IMsPublisher.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.service;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.ms.domain.TacMs;\nimport com.alibaba.tac.engine.ms.domain.TacMsDO;\nimport com.google.common.hash.Hashing;\nimport org.apache.commons.lang3.StringUtils;\n\nimport java.text.MessageFormat;\n\n/**\n * @author jinshuan.li 26/02/2018 10:04\n */\npublic interface IMsPublisher {\n\n    /**\n     * publish the instance\n     *\n     * @param tacInst\n     * @return\n     */\n    Boolean publish(TacInst tacInst);\n\n    /**\n     * publish the instance with data\n     *\n     * @param tacInst\n     * @param data\n     * @return\n     */\n    Boolean publish(TacInst tacInst, byte[] data);\n\n    /**\n     * pre publish with data\n     *\n     * @param tacInst\n     * @param data\n     * @return\n     */\n    Boolean prePublish(TacInst tacInst, byte[] data);\n\n    /**\n     * git 预发\n     * @param tacMsDO\n     * @param tacInst\n     * @return\n     */\n    TacInst gitPrePublish(TacMsDO tacMsDO,TacInst tacInst);\n    /**\n     * offline instance\n     *\n     * @param tacInst\n     * @return\n     */\n    Boolean offline(TacInst tacInst);\n\n    /**\n     * check the instance data sign\n     *\n     * @param tacInst\n     * @param instanceFile\n     */\n    default void checkSign(TacInst tacInst, byte[] instanceFile) {\n\n        String md5 = Hashing.md5().hashBytes(instanceFile).toString();\n        if (!StringUtils.equalsIgnoreCase(tacInst.getJarVersion(), md5)) {\n            throw new IllegalStateException(\"instance jar version check error \" + tacInst.getId());\n        }\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/service/IMsService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.service;\n\nimport com.alibaba.tac.engine.ms.domain.TacMsDO;\nimport org.apache.commons.lang3.StringUtils;\n\nimport java.util.List;\n\n/**\n * @author jinshuan.li 12/02/2018 17:18\n */\npublic interface IMsService {\n\n    /**\n     *  create ms\n     *\n     * @param tacMsDO\n     * @return\n     */\n    TacMsDO createMs(TacMsDO tacMsDO);\n\n    /**\n     *  remove ms\n     *\n     * @param msCode\n     * @return\n     */\n    Boolean removeMs(String msCode);\n\n    /**\n     *  invalid ms\n     *\n     * @param msCode\n     * @return\n     */\n    Boolean invalidMs(String msCode);\n\n    /**\n     *  update ms\n     *\n     * @param msCode\n     * @param tacMsDO\n     * @return\n     */\n    Boolean updateMs(String msCode, TacMsDO tacMsDO);\n\n    /**\n     *  get ms\n     *\n     * @param msCode\n     * @return\n     */\n    TacMsDO getMs(String msCode);\n\n    /**\n     *  get all ms\n     *\n     * @return\n     */\n    List<TacMsDO> getAllMs();\n\n    default void checkMsDO(TacMsDO tacMsDO) {\n\n        if (tacMsDO == null) {\n            throw new IllegalArgumentException(\"tacMsDO is null\");\n        }\n\n        if (StringUtils.isEmpty(tacMsDO.getCode()) || StringUtils.isEmpty(tacMsDO.getName())) {\n            throw new IllegalArgumentException(\"code or name is empty\");\n        }\n\n\n\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/service/IMsSubscriber.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.service;\n\n/**\n * @author jinshuan.li 26/02/2018 15:24\n */\npublic interface IMsSubscriber {\n\n    /**\n     *  begin subscribe event\n     */\n    void subscribe();\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/service/redis/RedisMsPublisher.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.service.redis;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.tac.engine.code.CodeCompileService;\nimport com.alibaba.tac.engine.git.GitRepoService;\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.service.DevMsInstFileService;\nimport com.alibaba.tac.engine.inst.service.IMsInstService;\nimport com.alibaba.tac.engine.inst.service.redis.RedisMsInstFileService;\nimport com.alibaba.tac.engine.ms.domain.TacMsDO;\nimport com.alibaba.tac.engine.ms.domain.TacMsPublishMeta;\nimport com.alibaba.tac.engine.ms.service.AbstractDefaultMsPublisher;\nimport com.alibaba.tac.engine.ms.service.IMsService;\nimport com.alibaba.tac.engine.properties.TacMsConstants;\nimport com.alibaba.tac.engine.properties.TacRedisConfigProperties;\nimport com.alibaba.tac.engine.code.TacFileService;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang3.StringUtils;\nimport org.springframework.data.redis.core.HashOperations;\nimport org.springframework.data.redis.core.RedisTemplate;\n\nimport javax.annotation.Resource;\n\n/**\n * @author jinshuan.li 2018/3/1 07:58 the redis ms publisher\n */\n@Slf4j\npublic class RedisMsPublisher extends AbstractDefaultMsPublisher {\n\n    @Resource\n    private DevMsInstFileService devMsInstFileService;\n\n    @Resource(name = \"remoteMsInstFileService\")\n    private RedisMsInstFileService redisMsInstFileService;\n\n    @Resource(name = \"prePublishMsInstFileService\")\n    private RedisMsInstFileService prePublishMsInstFileService;\n\n    @Resource\n    private TacRedisConfigProperties tacRedisConfigProperties;\n\n    @Resource(name = \"redisTemplate\")\n    HashOperations<String, String, TacMsPublishMeta> hashOperations;\n\n    @Resource\n    private GitRepoService gitRepoService;\n\n    @Resource\n    private IMsInstService msInstService;\n\n    @Resource\n    private CodeCompileService codeCompileService;\n\n    @Resource\n    private IMsService msService;\n\n    /**\n     * the subsciber is serializ with string ,then the publisher should serialize with string too;\n     */\n    @Resource(name = \"counterRedisTemplate\")\n    private RedisTemplate<String, JSONObject> redisTopicTemplate;\n\n    @Override\n    public Boolean publish(TacInst tacInst, byte[] data) {\n\n        byte[] instanceFile = data;\n\n        tacInst.setJarVersion(TacFileService.getMd5(data));\n        tacInst.setStatus(TacInst.STATUS_PUBLISH);\n        // 1 save data\n        redisMsInstFileService.saveInstanceFile(tacInst, instanceFile);\n\n        // 2. save meta data\n\n        String msCode = tacInst.getMsCode();\n\n        TacMsPublishMeta publishMeta = new TacMsPublishMeta(tacInst);\n\n        hashOperations.put(getMainKey(), msCode, publishMeta);\n\n        // 3. send message\n        redisTopicTemplate.convertAndSend(getPublishChannel(), JSONObject.toJSONString(publishMeta));\n\n        TacMsDO ms = msService.getMs(tacInst.getMsCode());\n\n        // 4 update ms\n\n        Long oldPublishId = ms.getPublishedInstId();\n\n        ms.setPublishedInstId(tacInst.getId());\n        msService.updateMs(tacInst.getMsCode(), ms);\n\n        // 5 update instance\n\n        msInstService.updateTacMsInst(tacInst.getId(), tacInst);\n\n        if (oldPublishId != null && !oldPublishId.equals(tacInst.getId())) {\n            TacInst tacMsInst = msInstService.getTacMsInst(oldPublishId);\n\n            if (tacMsInst != null) {\n                tacMsInst.setStatus(TacInst.STATUS_PRE_PUBLISH);\n                msInstService.updateTacMsInst(oldPublishId, tacMsInst);\n            }\n        }\n\n        return true;\n    }\n\n    @Override\n    public Boolean offline(TacInst tacInst) {\n\n        String msCode = tacInst.getMsCode();\n\n        // 1. update data\n        TacMsPublishMeta publishMeta = new TacMsPublishMeta(tacInst, TacMsConstants.INST_STATUS_OFFLINE);\n\n        hashOperations.put(getMainKey(), msCode, publishMeta);\n\n        // 2. send message\n        redisTopicTemplate.convertAndSend(getPublishChannel(), JSONObject.toJSONString(publishMeta));\n\n        return true;\n    }\n\n    private String getMainKey() {\n\n        return tacRedisConfigProperties.getMsListPath();\n    }\n\n    private String getPublishChannel() {\n\n        return tacRedisConfigProperties.getPublishEventChannel();\n    }\n\n    @Override\n    public Boolean prePublish(TacInst tacInst, byte[] data) {\n\n        byte[] instanceFile = data;\n        tacInst.setStatus(TacInst.STATUS_PRE_PUBLISH);\n        tacInst.setPrePublishJarVersion(TacFileService.getMd5(data));\n\n        // 1 save data\n        prePublishMsInstFileService.saveInstanceFile(tacInst, instanceFile);\n\n        // 2 update meta data\n\n        msInstService.updateTacMsInst(tacInst.getId(), tacInst);\n\n        return true;\n\n    }\n\n    @Override\n    public TacInst gitPrePublish(TacMsDO tacMsDO, TacInst tacInst) {\n\n        if (StringUtils.isEmpty(tacMsDO.getGitRepo())) {\n            throw new IllegalArgumentException(\"no git repo address\");\n        }\n\n        String gitBranch = tacInst.getGitBranch();\n\n        if (StringUtils.isEmpty(gitBranch)) {\n            throw new IllegalArgumentException(\"git branch is emplty\");\n        }\n        TacMsDO ms = tacMsDO;\n\n        String sourcePath = gitRepoService.pullInstanceCode(ms.getGitRepo(), ms.getCode(), tacInst.getGitBranch());\n\n        try {\n            codeCompileService.compile(tacInst.getId(), sourcePath);\n\n            byte[] jarFile = codeCompileService.getJarFile(tacInst.getId());\n\n            this.prePublish(tacInst, jarFile);\n\n        } catch (Exception e) {\n            throw new IllegalStateException(e);\n        }\n\n        return msInstService.getTacMsInst(tacInst.getId());\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/service/redis/RedisMsService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.service.redis;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.ms.domain.TacMsDO;\nimport com.alibaba.tac.engine.ms.domain.TacMsStatus;\nimport com.alibaba.tac.engine.ms.service.IMsService;\nimport com.alibaba.tac.engine.properties.TacRedisConfigProperties;\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.data.redis.core.HashOperations;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.util.List;\n\n/**\n * @author jinshuan.li 2018/3/1 07:59\n */\n@Slf4j\npublic class RedisMsService implements IMsService {\n\n    @Resource\n    private TacRedisConfigProperties tacRedisConfigProperties;\n\n    @Resource(name = \"redisTemplate\")\n    private RedisTemplate<String, JSONObject> redisTemplate;\n\n    @Resource(name = \"redisTemplate\")\n    HashOperations<String, String, TacMsDO> hashOperations;\n\n    @Override\n    public TacMsDO createMs(TacMsDO tacMsDO) {\n\n        checkMsDO(tacMsDO);\n\n        hashOperations.put(getMainKey(), tacMsDO.getCode(), tacMsDO);\n\n        return tacMsDO;\n    }\n\n    @Override\n    public Boolean removeMs(String msCode) {\n\n        hashOperations.delete(getMainKey(), msCode);\n\n        return true;\n    }\n\n    @Override\n    public Boolean invalidMs(String msCode) {\n\n        TacMsDO ms = this.getMs(msCode);\n        if (ms == null) {\n            return true;\n        }\n\n        ms.setStatus(TacMsStatus.INVALID.code());\n\n        return this.updateMs(msCode, ms);\n    }\n\n    @Override\n    public Boolean updateMs(String msCode, TacMsDO tacMsDO) {\n\n\n        hashOperations.put(getMainKey(), msCode, tacMsDO);\n\n        return true;\n    }\n\n    @Override\n    public TacMsDO getMs(String msCode) {\n\n        return hashOperations.get(getMainKey(), msCode);\n    }\n\n    @Override\n    public List<TacMsDO> getAllMs() {\n        return hashOperations.values(getMainKey());\n    }\n\n    private String getMainKey() {\n\n        return tacRedisConfigProperties.getMsMetaDataPath();\n\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/ms/service/redis/RedisMsSubscriber.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.ms.service.redis;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.tac.engine.event.domain.GetAllMsEvent;\nimport com.alibaba.tac.engine.event.domain.MsOfflineEvent;\nimport com.alibaba.tac.engine.event.domain.MsReceivePublishEvent;\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.ms.domain.TacMsPublishMeta;\nimport com.alibaba.tac.engine.ms.service.DefaultMsEventHandlers;\nimport com.alibaba.tac.engine.ms.service.IMsSubscriber;\nimport com.alibaba.tac.engine.properties.TacMsConstants;\nimport com.alibaba.tac.engine.properties.TacRedisConfigProperties;\nimport com.google.common.collect.Lists;\nimport com.google.common.collect.Sets;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.collections4.CollectionUtils;\nimport org.apache.commons.collections4.MapUtils;\nimport org.apache.commons.lang3.StringUtils;\nimport org.springframework.data.redis.core.HashOperations;\nimport org.springframework.data.redis.listener.ChannelTopic;\nimport org.springframework.data.redis.listener.RedisMessageListenerContainer;\nimport org.springframework.data.redis.listener.adapter.MessageListenerAdapter;\n\nimport javax.annotation.Resource;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Set;\n\nimport static com.alibaba.tac.engine.properties.TacMsConstants.INST_STATUS_ONLINE;\n\n/**\n * @author jinshuan.li 2018/3/1 07:59\n */\n@Slf4j\npublic class RedisMsSubscriber implements IMsSubscriber {\n\n    @Resource\n    private RedisMessageListenerContainer container;\n\n    @Resource(name = \"redisSubscribMessageAdapter\")\n    private MessageListenerAdapter messageListenerAdapter;\n\n    @Resource\n    private TacRedisConfigProperties tacRedisConfigProperties;\n\n    @Resource(name = \"redisTemplate\")\n    HashOperations<String, String, TacMsPublishMeta> hashOperations;\n\n    @Resource\n    private DefaultMsEventHandlers defaultMsEventHandlers;\n\n    private Set<String> loadedMsCodes = Sets.newHashSet();\n\n    /**\n     * load all msCode\n     */\n    public void loadAllMsCode() {\n\n        Map<String, TacMsPublishMeta> entries = hashOperations.entries(getMainKey());\n\n        if (MapUtils.isEmpty(entries)) {\n            return;\n        }\n\n        Collection<TacMsPublishMeta> values = entries.values();\n\n        if (CollectionUtils.isEmpty(values)) {\n            return;\n        }\n        log.debug(\"on GetAllMsEvent : \", values);\n\n        defaultMsEventHandlers.getPublisher().publishEvent(new GetAllMsEvent(Lists.newArrayList(entries.keySet())));\n\n        entries.forEach((msCode, tacMsPublishMeta) -> {\n\n            if (loadedMsCodes.contains(msCode)) {\n                return;\n            }\n\n            handleOnePublish(tacMsPublishMeta, true);\n\n            loadedMsCodes.add(msCode);\n        });\n    }\n\n    private void handleOnePublish(TacMsPublishMeta publishMeta, Boolean isLoad) {\n\n        log.debug(\"on tacInstData :{}\", publishMeta);\n\n        TacInst tacInst = publishMeta.getTacInst();\n        if (publishMeta.getStatus().equals(INST_STATUS_ONLINE)) {\n            log.debug(\"publish inst tacInst:{} isload:{}\", tacInst, isLoad);\n            defaultMsEventHandlers.getPublisher().publishEvent(new MsReceivePublishEvent(tacInst));\n        } else if (publishMeta.getStatus().equals(TacMsConstants.INST_STATUS_OFFLINE)) {\n            if (!isLoad) {\n                log.debug(\"removePublished tacInst:{}\", tacInst);\n                defaultMsEventHandlers.getPublisher().publishEvent(new MsOfflineEvent(tacInst));\n            }\n        }\n\n    }\n\n    @Override\n    public void subscribe() {\n\n        container.addMessageListener(messageListenerAdapter,\n            new ChannelTopic(tacRedisConfigProperties.getPublishEventChannel()));\n\n        this.loadAllMsCode();\n\n    }\n\n    /**\n     * receiveMessage, don't change the name and params\n     *\n     * @param message\n     * @param channel\n     */\n    public void receiveMessage(String message, String channel) {\n\n        if (!StringUtils.equalsIgnoreCase(channel, getPublishChannel())) {\n            return;\n        }\n\n        log.debug(\"receiveMessage. channel:{} message:{}\", channel, message);\n\n        TacMsPublishMeta publishMeta = JSON.parseObject(message, TacMsPublishMeta.class);\n\n        handleOnePublish(publishMeta, false);\n\n    }\n\n    private String getMainKey() {\n\n        return tacRedisConfigProperties.getMsListPath();\n    }\n\n    private String getPublishChannel() {\n\n        return tacRedisConfigProperties.getPublishEventChannel();\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/properties/TacDataPathProperties.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.properties;\n\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.stereotype.Component;\n\n\n/**\n * @author jinshuan.li 12/02/2018 16:45\n */\n@Component\n@ConfigurationProperties(prefix = \"tac.data.path\")\npublic class TacDataPathProperties {\n\n    private String sourcePathPrefix;\n\n    @Value(\"${user.home}/tac/data/classes\")\n    private String outputPathPrefix;\n    @Value(\"${user.home}/tac/data/ms\")\n    private String classLoadPathPrefix;\n\n    private String pkgPrefix=\"com.alibaba.tac.biz\";\n\n    public void setSourcePathPrefix(String sourcePathPrefix) {\n        this.sourcePathPrefix = sourcePathPrefix;\n    }\n\n    public String getSourcePathPrefix() {\n        return sourcePathPrefix;\n    }\n\n    public String getOutputPathPrefix() {\n        return outputPathPrefix;\n    }\n\n    public void setOutputPathPrefix(String outputPathPrefix) {\n        this.outputPathPrefix = outputPathPrefix;\n    }\n\n    public String getClassLoadPathPrefix() {\n        return classLoadPathPrefix;\n    }\n\n    public void setClassLoadPathPrefix(String classLoadPathPrefix) {\n        this.classLoadPathPrefix = classLoadPathPrefix;\n    }\n\n    public String getPkgPrefix() {\n        return pkgPrefix;\n    }\n\n    public void setPkgPrefix(String pkgPrefix) {\n        this.pkgPrefix = pkgPrefix;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/properties/TacGitlabProperties.java",
    "content": "package com.alibaba.tac.engine.properties;\n\nimport lombok.Data;\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.stereotype.Component;\n\n/**\n * @author jinshuan.li 06/05/2018 14:30\n */\n@Data\n@Component\n@ConfigurationProperties(prefix = \"tac.gitlab.config\")\npublic class TacGitlabProperties {\n\n    private String hostURL = \"http://127.0.0.1/\";\n\n    private String token = \"t_bj6gJywKH2fCkbWY7k\";\n\n    private String groupName = \"tac-admin\";\n\n    private String userName = \"tac-admin\";\n\n    private String password = \"tac-admin\";\n\n    private String basePath = \"/home/admin/tac/git_codes\";\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/properties/TacMsConstants.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.properties;\n\n/**\n * @author jinshuan.li 26/02/2018 12:00\n */\npublic class TacMsConstants {\n\n\n    public static final String DEFAULT_STORE=\"redis\";\n    /**\n     * zookeeper max data size  KB\n     */\n    public static Integer ZooKeeperMaxDataSizeKB = 1000;\n\n    /**\n     *  inst status online\n     */\n    public static Integer INST_STATUS_ONLINE = 1;\n\n    /**\n     *  inst status offline\n     */\n    public static Integer INST_STATUS_OFFLINE = -1;\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/properties/TacRedisConfigProperties.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.properties;\n\nimport lombok.Data;\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.stereotype.Component;\n\n/**\n * @author jinshuan.li 2018/3/1 07:37\n */\n\n@Data\n@Component\n@ConfigurationProperties(prefix = \"tac.redis.config\")\npublic class TacRedisConfigProperties {\n\n    /**\n     * msInst meta data path\n     */\n    private String msInstMetaDataPath = \"com.alibaba.tac.msInstMetaData\";\n\n    /**\n     * ms meta data path\n     */\n    private String msMetaDataPath = \"com.alibaba.tac.msMetaData\";\n\n    /**\n     *  data path prefix\n     */\n    private String dataPathPrefix = \"msInstFile\";\n\n    /**\n     *  ms list path\n     */\n    private String msListPath = \"msPublishedList\";\n\n    /**\n     * the event publish channel\n     */\n    private String publishEventChannel = \"tac.inst.publish.channel\";\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/service/DefaultTacEngineService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.service;\n\nimport com.alibaba.tac.engine.inst.domain.TacInstanceInfo;\nimport com.alibaba.tac.engine.util.TacLogUtils;\nimport com.alibaba.tac.sdk.common.TacContants;\nimport com.alibaba.tac.sdk.common.TacParams;\nimport com.alibaba.tac.sdk.common.TacResult;\nimport com.alibaba.tac.sdk.common.TacThreadLocals;\nimport com.alibaba.tac.sdk.domain.TacRequestContext;\nimport com.alibaba.tac.sdk.handler.TacHandler;\nimport com.alibaba.tac.sdk.infrastracture.TacLogger;\nimport com.alibaba.tac.sdk.utils.TacIPUtils;\nimport org.apache.commons.lang3.StringUtils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.core.Ordered;\nimport org.springframework.core.PriorityOrdered;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * @author jinshuan.li 12/02/2018 18:49\n */\n@Service\npublic class DefaultTacEngineService implements TacEngineService, PriorityOrdered {\n\n    private Logger LOGGER = LoggerFactory.getLogger(DefaultTacEngineService.class);\n    @Resource\n    private TacInstanceContainerService instanceContainerService;\n\n    @Resource\n    private TacInstRunService tacInstRunService;\n\n    @Resource\n    TacLogger TACLOG;\n\n    @Override\n    public TacResult<Map<String, Object>> execute(String msCode, TacParams params) {\n\n        /** 参数校验 **/\n        TacResult<Map<String, Object>> result = new TacResult<>(Collections.EMPTY_MAP);\n        if (params == null || StringUtils.isEmpty(params.getAppName())) {\n            TacLogUtils.warnRate(LOGGER, \"{}^{}^{}^{}^{}\", params.getAppName(), params.getMsCodes(), params.isBatch(),\n                0, params.getParamMap());\n            return TacResult.errorResult(\"PARAM_ERROR\", \"app name should not be empty...\");\n        }\n        if (params == null || StringUtils.isEmpty(params.getMsCodes())) {\n            TacLogUtils.warnRate(LOGGER, \"{}^{}^{}^{}^{}\", params.getAppName(), params.getMsCodes(), params.isBatch(),\n                0, params.getParamMap());\n            return TacResult.errorResult(\"PARAM_ERROR\", \"msCodes should not be empty...\");\n        }\n        /** set context param **/\n        TacRequestContext context = new TacRequestContext();\n        this.setTacContext(context, params);\n        // debug param\n        String debug = String.valueOf(params.getParamValue(TacContants.DEBUG));\n        Map<String, Object> resultDataMap = new HashMap<>();\n\n        Map<String, Object> singleDateMap = new HashMap<>();\n        long singleStartTime = System.currentTimeMillis();\n\n        try {\n            TacThreadLocals.clear();\n\n            Map<String, Object> tacParams = new HashMap<>(5);\n            if (params.getParamValue(TacContants.IP) != null) {\n                tacParams.put(TacContants.IP, params.getParamValue(TacContants.IP));\n            }\n            tacParams.put(TacContants.MS_CODE, msCode);\n            if (params.getParamValue(TacContants.DEBUG) != null) {\n                tacParams.put(TacContants.DEBUG, String.valueOf(params.getParamValue(TacContants.DEBUG)));\n            }\n\n            TacThreadLocals.TAC_PARAMS.set(tacParams);\n\n            TacInstanceInfo tacInstanceInfo = instanceContainerService.getInstanceFromCache(msCode);\n\n            if (tacInstanceInfo == null) {\n                this.setCommonFields(singleDateMap, msCode, \"NOT_EXIST\", msCode + \": the inst is not exist...\", false, debug);\n                resultDataMap.put(msCode, singleDateMap);\n                result.setData(resultDataMap);\n                return result;\n            }\n\n            context.setMsCode(msCode);\n            context.setInstId(tacInstanceInfo.getId());\n\n            /** execute user's ms code **/\n            TacResult<?> singleResult = null;\n            TacHandler tacHandler = tacInstanceInfo.getTacHandler();\n            singleResult = tacHandler.execute(context);\n            /** the result **/\n            if (singleResult != null && singleResult.isSuccess()) {\n                this.setCommonFields(singleDateMap, msCode, singleResult.getMsgCode(), singleResult.getMsgInfo(),\n                    singleResult.isSuccess(), debug);\n                if (singleResult.getHasMore() != null) {\n                    singleDateMap.put(\"hasMore\", singleResult.getHasMore());\n                }\n                singleDateMap.put(\"data\", singleResult.getData());\n                resultDataMap.put(msCode, singleDateMap);\n            } else {\n                this.setCommonFields(singleDateMap, msCode, singleResult.getMsgCode(), singleResult.getMsgInfo(),\n                    singleResult.isSuccess(), debug);\n                singleDateMap.put(\"data\", singleResult.getData());\n                resultDataMap.put(msCode, singleDateMap);\n            }\n\n        } catch (Exception e) {\n            singleDateMap.put(\"msCode\", msCode);\n            singleDateMap.put(\"errorCode\", \"MicroService_EXCEPTION\");\n            TACLOG.error(\n                \"-------------------------------------------------------------------------------------YourCode \"\n                    + \"Exception--------------------------------------------------------------------------------\",\n                e);\n            singleDateMap.put(\"errorMsg\", msCode + \" error , please check your code\");\n            singleDateMap.put(\"ip\", TacIPUtils.getLocalIp());\n            singleDateMap.put(\"success\", false);\n            resultDataMap.put(msCode, singleDateMap);\n\n        } finally {\n            if (\"true\".equalsIgnoreCase(debug)) {\n                result.setMsgInfo(TACLOG.getContent());\n            }\n            LOGGER.info(\"Single^{}^{}^{}^{}\", params.getAppName(), context.getMsCode(), false,\n                System.currentTimeMillis() - singleStartTime);\n            TacThreadLocals.clear();\n        }\n        result.setData(resultDataMap);\n        return result;\n\n    }\n\n    private void setCommonFields(Map<String, Object> singleDateMap, String msCode, String errorCode, String errorMsg,\n                                 boolean success, String debug) {\n        if (singleDateMap == null) {\n            return;\n        }\n        singleDateMap.put(\"msCode\", msCode);\n        if (!success) {\n            singleDateMap.put(\"errorCode\", errorCode);\n            singleDateMap.put(\"errorMsg\", errorMsg);\n        }\n        if (\"true\".equalsIgnoreCase(debug)) {\n            singleDateMap.put(\"ip\", TacIPUtils.getLocalIp());\n        }\n        singleDateMap.put(\"success\", success);\n\n    }\n\n    private void setTacContext(TacRequestContext context, TacParams params) {\n        /** app name **/\n        context.setAppName(params.getAppName());\n\n        /** custom params **/\n        context.putAll(params.getParamMap());\n    }\n\n    @Override\n    public int getOrder() {\n        return Ordered.LOWEST_PRECEDENCE;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/service/EngineBeansConfig.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.service;\n\nimport com.alibaba.tac.engine.compile.IJdkCompiler;\nimport com.alibaba.tac.engine.compile.JdkCompilerImpl;\nimport com.alibaba.tac.engine.properties.TacDataPathProperties;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\nimport javax.annotation.Resource;\n\n/**\n * @author jinshuan.li 12/02/2018 16:42\n * <p>\n * the engine beans config class\n */\n@Configuration\npublic class EngineBeansConfig {\n\n    @Resource\n    private TacDataPathProperties tacDataPathProperties;\n\n    @Bean\n    public IJdkCompiler jdkCompiler() {\n\n        IJdkCompiler iJdkCompiler = new JdkCompilerImpl();\n\n        return iJdkCompiler;\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/service/RedisBeansConfig.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.service;\n\nimport com.alibaba.tac.engine.common.SequenceCounter;\nimport com.alibaba.tac.engine.common.redis.RedisSequenceCounter;\nimport com.alibaba.tac.engine.inst.service.redis.RedisMsInstFileService;\nimport com.alibaba.tac.engine.inst.service.redis.RedisMsInstService;\nimport com.alibaba.tac.engine.ms.service.IMsSubscriber;\nimport com.alibaba.tac.engine.ms.service.redis.RedisMsPublisher;\nimport com.alibaba.tac.engine.ms.service.redis.RedisMsService;\nimport com.alibaba.tac.engine.ms.service.redis.RedisMsSubscriber;\nimport com.alibaba.tac.engine.util.ThreadPoolUtils;\nimport org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Profile;\nimport org.springframework.data.redis.connection.jedis.JedisConnectionFactory;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.data.redis.listener.RedisMessageListenerContainer;\nimport org.springframework.data.redis.listener.adapter.MessageListenerAdapter;\nimport org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;\nimport org.springframework.data.redis.serializer.StringRedisSerializer;\n\n/**\n * @author jinshuan.li 01/03/2018 10:12\n *\n * the beans while use redis store\n */\n\n@ConditionalOnProperty(name = \"tac.default.store\",havingValue = \"redis\")\n@Configuration\npublic class RedisBeansConfig {\n\n    @Bean\n    public RedisTemplate redisTemplate(\n        JedisConnectionFactory jedisConnectionFactory) {\n\n        return getRedisTemplate(jedisConnectionFactory);\n    }\n\n    @Bean(name = \"counterRedisTemplate\")\n    public RedisTemplate counterRedisTemplate(JedisConnectionFactory jedisConnectionFactory) {\n\n        return getCounterRedisTemplate(jedisConnectionFactory);\n    }\n\n    public static RedisTemplate getRedisTemplate(JedisConnectionFactory jedisConnectionFactory) {\n        RedisTemplate redisTemplate = new RedisTemplate();\n        redisTemplate.setConnectionFactory(jedisConnectionFactory);\n        redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());\n        return redisTemplate;\n    }\n\n    /**\n     * @param jedisConnectionFactory\n     * @return\n     */\n    public static RedisTemplate getCounterRedisTemplate(JedisConnectionFactory jedisConnectionFactory) {\n        RedisTemplate redisTemplate = new RedisTemplate();\n        redisTemplate.setConnectionFactory(jedisConnectionFactory);\n        // the conter should use  StringRedisSerializer\n        redisTemplate.setValueSerializer(new StringRedisSerializer());\n        return redisTemplate;\n    }\n\n    @Bean\n    public RedisMessageListenerContainer redisMessageListenerContainer(JedisConnectionFactory jedisConnectionFactory) {\n        RedisMessageListenerContainer container = new RedisMessageListenerContainer();\n        container.setConnectionFactory(jedisConnectionFactory);\n        // set thread pool\n        container.setTaskExecutor(ThreadPoolUtils.createThreadPool(10, \"tac-redis-subscribe-pool\"));\n        return container;\n    }\n\n    @Bean(name = \"redisSubscribMessageAdapter\")\n    public MessageListenerAdapter listenerAdapter(IMsSubscriber messageListener) {\n\n        MessageListenerAdapter adapter = new MessageListenerAdapter(messageListener, \"receiveMessage\");\n\n        return adapter;\n    }\n\n    /**\n     * the redis implements beans\n     */\n\n    @Bean(name = \"msInstIdCounter\")\n    public SequenceCounter msInstIdCounter() {\n        return new RedisSequenceCounter(\"msInstIdCounter\");\n    }\n\n    @Bean(name = \"remoteMsInstFileService\")\n    public RedisMsInstFileService redisMsInstFileService() {\n        return new RedisMsInstFileService(false);\n    }\n\n\n    @Bean(name = \"prePublishMsInstFileService\")\n    public RedisMsInstFileService redisPrePublishMsInstFileService() {\n        return new RedisMsInstFileService(true);\n    }\n\n\n    @Bean\n    public RedisMsInstService redisMsInstService() {\n\n        return new RedisMsInstService();\n    }\n\n    @Bean\n    public RedisMsPublisher redisMsPublisher() {\n\n        return new RedisMsPublisher();\n    }\n\n    @Bean\n    public RedisMsService redisMsService() {\n        return new RedisMsService();\n    }\n\n    @Bean\n    public RedisMsSubscriber redisMsSubscriber() {\n\n        return new RedisMsSubscriber();\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/service/TacEngineService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.service;\n\nimport com.alibaba.tac.sdk.common.TacParams;\nimport com.alibaba.tac.sdk.common.TacResult;\n\nimport java.util.Map;\n\n/**\n * @author jinshuan.li 12/02/2018 18:44\n * <p>\n * the engine entrance\n */\npublic interface TacEngineService {\n\n    /**\n     * execute msCode\n     *\n     * @param params\n     * @return\n     */\n    TacResult<Map<String, Object>> execute(String msCode, TacParams params);\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/service/TacInstRunService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.service;\n\nimport com.alibaba.tac.engine.code.CodeLoadService;\nimport com.alibaba.tac.sdk.common.TacContants;\nimport com.alibaba.tac.sdk.common.TacResult;\nimport com.alibaba.tac.sdk.common.TacThreadLocals;\nimport com.alibaba.tac.sdk.domain.TacRequestContext;\nimport com.alibaba.tac.sdk.handler.DisposableHandler;\nimport com.alibaba.tac.sdk.handler.InitializingHandler;\nimport com.alibaba.tac.sdk.handler.TacHandler;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * @author jinshuan.li 12/02/2018 14:11\n */\n@Service\npublic class TacInstRunService {\n\n    private Logger LOGGER = LoggerFactory.getLogger(TacInstRunService.class);\n\n    @Resource\n    private CodeLoadService codeLoadService;\n\n    /**\n     * @param instId\n     * @return\n     */\n    public TacResult<Object> runWithLoad(String msCode, Long instId, Map<String, Object> params) throws Exception {\n\n        Class<TacHandler> clazz = codeLoadService.loadHandlerClass(instId, TacHandler.class);\n\n        if (clazz == null) {\n            throw new RuntimeException(\"can't find target class\");\n        }\n        TacHandler handlerInstance = null;\n        // get an instance\n        handlerInstance = clazz.newInstance();\n\n        // init resource when the class implements InitializingHandler\n        if (InitializingHandler.class.isAssignableFrom(handlerInstance.getClass())) {\n            InitializingHandler initializingHandler = (InitializingHandler)handlerInstance;\n            LOGGER.info(\"InitializingHandler instId:{} init : {}\", instId, initializingHandler.getClass());\n            initializingHandler.afterPropertiesSet();\n        }\n\n        try {\n            TacRequestContext context = new TacRequestContext();\n\n            context.setMsCode(msCode);\n            context.setInstId(instId);\n            context.putAll(params);\n\n            // clear threadlocals before invoke\n            TacThreadLocals.clear();\n\n            Map<String, Object> tacParams = new HashMap<>(5);\n            tacParams.put(TacContants.MS_CODE, msCode);\n            tacParams.put(TacContants.DEBUG, true);\n\n            TacThreadLocals.TAC_PARAMS.set(tacParams);\n\n            // run\n            TacResult execute = handlerInstance.execute(context);\n\n            // get user log\n            String runLog = getRunLog();\n\n            execute.setMsgInfo(runLog);\n\n            // dispose resource\n            try {\n                if (DisposableHandler.class.isAssignableFrom(handlerInstance.getClass())) {\n                    DisposableHandler disposableHandler = (DisposableHandler)handlerInstance;\n                    LOGGER.info(\"DisposableHandler distory . instId:{} {}\", instId, disposableHandler.getClass());\n                    disposableHandler.destroy();\n                }\n            } catch (Exception ex) {\n                LOGGER.error(\"DisposableHandler error\", ex);\n            }\n            return execute;\n        } catch (Throwable e) {\n\n            throw new RuntimeException(e);\n        } finally {\n            TacThreadLocals.clear();\n        }\n\n    }\n\n    public String getRunLog() {\n\n        StringBuilder stringBuilder = TacThreadLocals.TAC_LOG_CONTENT.get();\n        if (stringBuilder != null) {\n            return stringBuilder.toString();\n        }\n        return \"\";\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/service/TacInstanceContainerService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.service;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.domain.TacInstanceInfo;\nimport com.alibaba.tac.engine.inst.service.IMsInstService;\nimport com.alibaba.tac.engine.ms.service.IMsSubscriber;\nimport com.alibaba.tac.sdk.handler.DisposableHandler;\nimport com.google.common.cache.Cache;\nimport com.google.common.cache.CacheBuilder;\nimport com.google.common.collect.Maps;\nimport org.apache.commons.lang3.StringUtils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.context.ApplicationListener;\nimport org.springframework.context.event.ContextRefreshedEvent;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.atomic.AtomicBoolean;\nimport java.util.concurrent.locks.ReentrantLock;\n\n/**\n * @author jinshuan.li 12/02/2018 17:27\n */\n@Service\npublic class TacInstanceContainerService implements ApplicationListener<ContextRefreshedEvent> {\n\n    private static Logger LOGGER = LoggerFactory.getLogger(TacInstanceLoadService.class);\n    /**\n     * cache\n     */\n    private Cache<String, TacInstanceInfo> tacInstCache = CacheBuilder.newBuilder().build();\n\n    @Resource\n    private IMsInstService iMsInstService;\n\n    @Resource\n    private TacInstanceLoadService tacInstanceLoadService;\n\n    @Resource\n    private IMsSubscriber msSubscriber;\n\n    private AtomicBoolean initFlag = new AtomicBoolean(false);\n\n    /**\n     * the locks prevent repeat load\n     */\n    private Map<String, ReentrantLock> instanceLoadLocks = Maps.newConcurrentMap();\n\n    public void init() {\n\n        if (initFlag.compareAndSet(false, true)) {\n\n            msSubscriber.subscribe();\n\n        }\n\n    }\n\n    /**\n     * get from cache\n     *\n     * @param msCode\n     * @return\n     */\n    public TacInstanceInfo getInstanceFromCache(String msCode) {\n        return tacInstCache.getIfPresent(msCode);\n    }\n\n    /**\n     * load instance\n     *\n     * @param tacInst\n     */\n    public TacInstanceInfo loadTacInstance(TacInst tacInst) throws Exception {\n\n        String msCode = tacInst.getMsCode();\n\n        ReentrantLock reentrantLock = instanceLoadLocks.get(msCode);\n        if (reentrantLock == null) {\n            reentrantLock = new ReentrantLock();\n            instanceLoadLocks.put(msCode, reentrantLock);\n        }\n        reentrantLock.lock();\n        try {\n            TacInstanceInfo existInstance = tacInstCache.getIfPresent(tacInst.getMsCode());\n\n            if (existInstance == null) {\n\n                TacInstanceInfo tacInstanceInfo = tacInstanceLoadService.loadTacHandler(tacInst);\n\n                assert tacInstanceInfo != null;\n                LOGGER.info(\"TacInstanceContainer loadTacInstance , result : {}\", tacInstanceInfo);\n                tacInstCache.put(msCode, tacInstanceInfo);\n\n                return tacInstanceInfo;\n            }\n\n            if (StringUtils.equals(tacInst.getJarVersion(), existInstance.getJarVersion())) {\n                LOGGER.debug(\"the exist instance has the same jarVersion ,skip. {}\", tacInst.getJarVersion());\n                LOGGER.info(\"TacInstanceContainer loadTacInstance has been load!\");\n                return existInstance;\n            }\n\n            TacInstanceInfo tacInstanceInfo = tacInstanceLoadService.loadTacHandler(tacInst);\n\n            assert tacInstanceInfo != null;\n\n            LOGGER.info(\"TacInstanceContainer loadTacInstance , result : {}\", tacInstanceInfo);\n            tacInstCache.put(msCode, tacInstanceInfo);\n            LOGGER.info(\"TacInstanceContainer loadTacInstance,msCode:{},instId:{},oldVersilon:{},newVersion:{}\", msCode,\n                tacInst.getId(), existInstance.getJarVersion(), tacInstanceInfo.getJarVersion());\n            if (existInstance != null) {\n                this.disposeInstance(existInstance);\n            }\n            return tacInstanceInfo;\n        } finally {\n            reentrantLock.unlock();\n        }\n\n    }\n\n    /**\n     * destroy instance\n     *\n     * @param oldTacInstanceInfo\n     */\n    private void disposeInstance(TacInstanceInfo oldTacInstanceInfo) {\n\n        try {\n            if (oldTacInstanceInfo != null && DisposableHandler.class.isAssignableFrom(\n                oldTacInstanceInfo.getTacHandler().getClass())) {\n                DisposableHandler disposableHandler = (DisposableHandler)oldTacInstanceInfo.getTacHandler();\n                LOGGER.info(\"TacInstanceContainer oldTacInstanceInfo distory : \" + oldTacInstanceInfo.getTacHandler()\n                    .getClass());\n                disposableHandler.destroy();\n            }\n        } catch (Exception ex) {\n\n            LOGGER.error(\"TacInstanceContainer DisposableHandler error\", ex);\n        }\n    }\n\n    @Override\n    public void onApplicationEvent(ContextRefreshedEvent event) {\n\n        try {\n            this.init();\n        } catch (Throwable e) {\n\n            LOGGER.error(e.getMessage(), e);\n\n            // throw exception immediatly when has error while start up\n            throw new IllegalStateException(\"init tacInstanceInfo error\");\n        }\n    }\n\n    /**\n     * offline Ms\n     *\n     * @param msCode\n     */\n    public void offlineMs(String msCode) {\n\n        TacInstanceInfo tacInstanceInfo = tacInstCache.getIfPresent(msCode);\n        if (tacInstanceInfo != null) {\n            LOGGER.info(\"offlineMs msCode:{}\", msCode);\n            tacInstCache.invalidate(msCode);\n            this.disposeInstance(tacInstanceInfo);\n        }\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/service/TacInstanceLoadService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.service;\n\nimport com.alibaba.tac.engine.code.CodeLoadService;\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.domain.TacInstanceInfo;\nimport com.alibaba.tac.engine.inst.service.IMsInstFileService;\nimport com.alibaba.tac.engine.inst.service.LocalMsInstFileService;\nimport com.alibaba.tac.sdk.handler.InitializingHandler;\nimport com.alibaba.tac.sdk.handler.TacHandler;\nimport org.apache.commons.lang3.StringUtils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\n\n/**\n * @author jinshuan.li 12/02/2018 17:27\n */\n@Service\npublic class TacInstanceLoadService {\n\n    private static Logger LOGGER = LoggerFactory.getLogger(TacInstanceLoadService.class);\n\n    @Resource(name = \"remoteMsInstFileService\")\n    private IMsInstFileService remoteMsInstFileService;\n\n    @Resource\n    private LocalMsInstFileService localMsInstFileService;\n\n    @Resource\n    private CodeLoadService codeLoadService;\n\n    public TacInstanceInfo loadTacHandler(TacInst tacInst) throws Exception {\n\n        LOGGER.info(\"TacInstanceLoader.loadTacHandler start,tacMs:{}\", tacInst);\n        if (tacInst == null) {\n            return null;\n        }\n        //Step 1: download zip data\n        TacInstanceInfo tacInstanceInfo = new TacInstanceInfo();\n\n        long instId = tacInst.getId();\n        byte[] bytes = remoteMsInstFileService.getInstanceFile(tacInst.getId());\n\n        tacInstanceInfo.setJarVersion(tacInst.getJarVersion());\n        tacInstanceInfo.setId(instId);\n\n        LOGGER.info(\"TacInstanceLoader.loadTacHandler,msCode:{},instId:{},jarVersion:{}\", tacInst.getMsCode(), instId,\n            tacInst.getJarVersion());\n\n        if (bytes == null || StringUtils.isEmpty(tacInstanceInfo.getJarVersion())) {\n            throw new IllegalStateException(\"can't get jar file . instId:\" + tacInst.getId());\n        }\n\n        localMsInstFileService.saveInstanceFile(tacInst, bytes);\n\n        //Step 2: create CustomerClassLoader  load jar file\n\n        Class<TacHandler> clazz = codeLoadService.loadHandlerClass(instId, TacHandler.class);\n        if (clazz == null) {\n            LOGGER.error(\"can't find  the calss {} from source. instId:{}\", TacHandler.class.getCanonicalName(),\n                instId);\n            throw new IllegalStateException(\"can't find  the TacHandler.calss from source. instId:\" + tacInst.getId());\n        }\n        TacHandler tacHandler = clazz.newInstance();\n\n        LOGGER.info(\n            \"InitializingHandler init class : \" + tacHandler.getClass() + \" , isInit :\" + InitializingHandler.class\n                .isAssignableFrom(tacHandler.getClass()));\n\n        //  init resource\n        if (InitializingHandler.class.isAssignableFrom(tacHandler.getClass())) {\n            InitializingHandler initializingHandler = (InitializingHandler)tacHandler;\n            LOGGER.info(\"InitializingHandler init : \" + initializingHandler.getClass());\n            initializingHandler.afterPropertiesSet();\n        }\n        tacInstanceInfo.setTacHandler(tacHandler);\n\n        LOGGER.info(\"TacInstanceLoader.loadTacHandler,instId {} end ..\", instId);\n\n        return tacInstanceInfo;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/service/TacPublishTestService.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.service;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.service.IMsInstFileService;\nimport com.alibaba.tac.engine.inst.service.IMsInstService;\nimport com.alibaba.tac.engine.inst.service.LocalMsInstFileService;\nimport com.alibaba.tac.sdk.common.TacContants;\nimport com.alibaba.tac.sdk.common.TacParams;\nimport com.alibaba.tac.sdk.common.TacResult;\nimport com.google.common.collect.Maps;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.commons.lang3.StringUtils;\nimport org.asynchttpclient.AsyncHttpClient;\nimport org.asynchttpclient.ListenableFuture;\nimport org.asynchttpclient.Response;\nimport org.asynchttpclient.util.HttpConstants;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.util.Map;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\nimport static org.asynchttpclient.Dsl.asyncHttpClient;\n\n/**\n * @author jinshuan.li 06/03/2018 14:34\n */\n@Slf4j\n@Service\npublic class TacPublishTestService {\n\n    @Resource\n    private IMsInstService msInstService;\n\n    @Resource(name = \"prePublishMsInstFileService\")\n    private IMsInstFileService prePublishMsInstFileService;\n\n    @Resource\n    private LocalMsInstFileService localMsInstFileService;\n\n    @Resource\n    private TacInstRunService tacInstRunService;\n\n    @Resource\n    private TacEngineService tacEngineService;\n\n    @Value(\"${tac.container.web.api:http://localhost:8001/api/tac/execute}\")\n    private String containerWebApi;\n\n    /**\n     * prePublishTest\n     *\n     * @param instId\n     * @param msCode\n     * @param params\n     * @return\n     */\n    public TacResult<Object> prePublishTest(Long instId, String msCode, Map<String, Object> params) throws Exception {\n\n        TacInst tacMsInst = msInstService.getTacMsInst(instId);\n        if (tacMsInst == null) {\n            throw new IllegalArgumentException(\"the instance is not exist\");\n        }\n\n        if (!StringUtils.equalsIgnoreCase(tacMsInst.getMsCode(), msCode)) {\n            throw new IllegalArgumentException(\"the code is not match\");\n        }\n\n        byte[] instanceFile = prePublishMsInstFileService.getInstanceFile(instId);\n\n        if (instanceFile == null) {\n\n            throw new IllegalStateException(\"can't get instance file\");\n        }\n        // save data to local\n        localMsInstFileService.saveInstanceFile(tacMsInst, instanceFile);\n\n        // load and run\n        return tacInstRunService.runWithLoad(msCode, instId, params);\n    }\n\n    /**\n     * online publish test\n     *\n     * @param instId\n     * @param msCode\n     * @param params\n     * @return\n     */\n    public TacResult<?> onlinePublishTest(Long instId, String msCode, Map<String, Object> params) {\n\n        // 走http请求调用\n\n        if (params == null) {\n            params = Maps.newHashMap();\n        }\n        params.put(TacContants.DEBUG, true);\n\n        return onlinePublishTestHttp(instId, msCode, params);\n\n    }\n\n    /**\n     * test with http .\n     *\n     * @param instId\n     * @param msCode\n     * @param params\n     * @return\n     */\n    private TacResult<?> onlinePublishTestHttp(Long instId, String msCode, Map<String, Object> params) {\n\n        AsyncHttpClient asyncHttpClient = asyncHttpClient();\n\n        ListenableFuture<Response> execute = asyncHttpClient.preparePost(containerWebApi + \"/\" + msCode)\n            .addHeader(\"Content-Type\", \"application/json;charset=UTF-8\").setBody(JSONObject.toJSONString(params))\n            .execute();\n        Response response;\n        try {\n            response = execute.get(10, TimeUnit.SECONDS);\n            if (response.getStatusCode() == HttpConstants.ResponseStatusCodes.OK_200) {\n                TacResult tacResult = JSONObject.parseObject(response.getResponseBody(), TacResult.class);\n                return tacResult;\n            }\n            log.error(\"onlinePublishTestHttp msCode:{} params:{} {}\", msCode, params, response);\n            throw new IllegalStateException(\"request engine error \" + msCode);\n        } catch (Exception e) {\n            throw new IllegalStateException(e.getMessage(), e);\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/util/Bytes.java",
    "content": "/**\n * Copyright 2010 The Apache Software Foundation\n * <p>\n * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE\n * file distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the\n * License.  You may obtain a copy of the License at\n * <p>\n * http://www.apache.org/licenses/LICENSE-2.0\n * <p>\n * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on\n * an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations under the License.\n */\npackage com.alibaba.tac.engine.util;\n\nimport com.alibaba.tac.engine.util.Bytes.LexicographicalComparerHolder.UnsafeComparer;\nimport com.google.common.annotations.VisibleForTesting;\nimport com.google.common.base.Function;\nimport com.google.common.collect.Collections2;\nimport com.google.common.collect.Lists;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport sun.misc.Unsafe;\n\nimport java.io.DataInput;\nimport java.io.DataOutput;\nimport java.io.IOException;\nimport java.io.UnsupportedEncodingException;\nimport java.lang.reflect.Field;\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\nimport java.security.AccessController;\nimport java.security.PrivilegedAction;\nimport java.util.Arrays;\nimport java.util.Collection;\nimport java.util.Iterator;\nimport java.util.List;\n\n/**\n * copy from hbase bytes\n */\n\n/**\n * Utility class that handles byte arrays, conversions to/from other types, comparisons, hash code generation,\n * manufacturing keys for HashMaps or HashSets, etc.\n */\npublic class Bytes {\n\n    private static final Log LOG = LogFactory.getLog(Bytes.class);\n\n    /**\n     * Size of boolean in bytes\n     */\n    public static final int SIZEOF_BOOLEAN = Byte.SIZE / Byte.SIZE;\n\n    /**\n     * Size of byte in bytes\n     */\n    public static final int SIZEOF_BYTE = SIZEOF_BOOLEAN;\n\n    /**\n     * Size of char in bytes\n     */\n    public static final int SIZEOF_CHAR = Character.SIZE / Byte.SIZE;\n\n    /**\n     * Size of double in bytes\n     */\n    public static final int SIZEOF_DOUBLE = Double.SIZE / Byte.SIZE;\n\n    /**\n     * Size of float in bytes\n     */\n    public static final int SIZEOF_FLOAT = Float.SIZE / Byte.SIZE;\n\n    /**\n     * Size of int in bytes\n     */\n    public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;\n\n    /**\n     * Size of long in bytes\n     */\n    public static final int SIZEOF_LONG = Long.SIZE / Byte.SIZE;\n\n    /**\n     * Size of short in bytes\n     */\n    public static final int SIZEOF_SHORT = Short.SIZE / Byte.SIZE;\n\n    /**\n     * Estimate of size cost to pay beyond payload in jvm for instance of byte []. Estimate based on study of jhat and\n     * jprofiler numbers.\n     */\n    // JHat says BU is 56 bytes.\n    // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)\n    public static final int ESTIMATED_HEAP_TAX = 16;\n\n    /**\n     * Put bytes at the specified byte array position.\n     *\n     * @param tgtBytes  the byte array\n     * @param tgtOffset position in the array\n     * @param srcBytes  array to write out\n     * @param srcOffset source offset\n     * @param srcLength source length\n     * @return incremented offset\n     */\n    public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes,\n                               int srcOffset, int srcLength) {\n        System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);\n        return tgtOffset + srcLength;\n    }\n\n    /**\n     * Write a single byte out to the specified byte array position.\n     *\n     * @param bytes  the byte array\n     * @param offset position in the array\n     * @param b      byte to write out\n     * @return incremented offset\n     */\n    public static int putByte(byte[] bytes, int offset, byte b) {\n        bytes[offset] = b;\n        return offset + 1;\n    }\n\n    /**\n     * Returns a new byte array, copied from the passed ByteBuffer.\n     *\n     * @param bb A ByteBuffer\n     * @return the byte array\n     */\n    public static byte[] toBytes(ByteBuffer bb) {\n        int length = bb.limit();\n        byte[] result = new byte[length];\n        System.arraycopy(bb.array(), bb.arrayOffset(), result, 0, length);\n        return result;\n    }\n\n    /**\n     * @param b Presumed UTF-8 encoded byte array.\n     * @return String made from <code>b</code>\n     */\n    public static String toString(final byte[] b) {\n        if (b == null) {\n            return null;\n        }\n        return toString(b, 0, b.length);\n    }\n\n    /**\n     * Joins two byte arrays together using a separator.\n     *\n     * @param b1  The first byte array.\n     * @param sep The separator to use.\n     * @param b2  The second byte array.\n     */\n    public static String toString(final byte[] b1,\n                                  String sep,\n                                  final byte[] b2) {\n        return toString(b1, 0, b1.length) + sep + toString(b2, 0, b2.length);\n    }\n\n    /**\n     * Converts the given byte buffer, from its array offset to its limit, to a string. The position and the mark are\n     * ignored.\n     *\n     * @param buf a byte buffer\n     * @return a string representation of the buffer's binary contents\n     */\n    public static String toString(ByteBuffer buf) {\n        if (buf == null) { return null; }\n        return toString(buf.array(), buf.arrayOffset(), buf.limit());\n    }\n\n    /**\n     * This method will convert utf8 encoded bytes into a string. If an UnsupportedEncodingException occurs, this method\n     * will eat it and return null instead.\n     *\n     * @param b   Presumed UTF-8 encoded byte array.\n     * @param off offset into array\n     * @param len length of utf-8 sequence\n     * @return String made from <code>b</code> or null\n     */\n    public static String toString(final byte[] b, int off, int len) {\n        if (b == null) {\n            return null;\n        }\n        if (len == 0) {\n            return \"\";\n        }\n        try {\n            return new String(b, off, len, HConstants.UTF8_ENCODING);\n        } catch (UnsupportedEncodingException e) {\n            LOG.error(\"UTF-8 not supported?\", e);\n            return null;\n        }\n    }\n\n    /**\n     * Write a printable representation of a byte array.\n     *\n     * @param b byte array\n     * @return string\n     * @see #toStringBinary(byte[], int, int)\n     */\n    public static String toStringBinary(final byte[] b) {\n        if (b == null) { return \"null\"; }\n        return toStringBinary(b, 0, b.length);\n    }\n\n    /**\n     * Converts the given byte buffer, from its array offset to its limit, to a string. The position and the mark are\n     * ignored.\n     *\n     * @param buf a byte buffer\n     * @return a string representation of the buffer's binary contents\n     */\n    public static String toStringBinary(ByteBuffer buf) {\n        if (buf == null) { return \"null\"; }\n        return toStringBinary(buf.array(), buf.arrayOffset(), buf.limit());\n    }\n\n    /**\n     * Write a printable representation of a byte array. Non-printable characters are hex escaped in the format \\\\x%02X,\n     * eg: \\x00 \\x05 etc\n     *\n     * @param b   array to write out\n     * @param off offset to start at\n     * @param len length to write\n     * @return string output\n     */\n    public static String toStringBinary(final byte[] b, int off, int len) {\n        StringBuilder result = new StringBuilder();\n        try {\n            String first = new String(b, off, len, \"ISO-8859-1\");\n            for (int i = 0; i < first.length(); ++i) {\n                int ch = first.charAt(i) & 0xFF;\n                if ((ch >= '0' && ch <= '9')\n                    || (ch >= 'A' && ch <= 'Z')\n                    || (ch >= 'a' && ch <= 'z')\n                    || \" `~!@#$%^&*()-_=+[]{}\\\\|;:'\\\",.<>/?\".indexOf(ch) >= 0) {\n                    result.append(first.charAt(i));\n                } else {\n                    result.append(String.format(\"\\\\x%02X\", ch));\n                }\n            }\n        } catch (UnsupportedEncodingException e) {\n            LOG.error(\"ISO-8859-1 not supported?\", e);\n        }\n        return result.toString();\n    }\n\n    private static boolean isHexDigit(char c) {\n        return\n            (c >= 'A' && c <= 'F') ||\n                (c >= '0' && c <= '9');\n    }\n\n    /**\n     * Takes a ASCII digit in the range A-F0-9 and returns the corresponding integer/ordinal value.\n     *\n     * @param ch The hex digit.\n     * @return The converted hex value as a byte.\n     */\n    public static byte toBinaryFromHex(byte ch) {\n        if (ch >= 'A' && ch <= 'F') { return (byte)((byte)10 + (byte)(ch - 'A')); }\n        // else\n        return (byte)(ch - '0');\n    }\n\n    public static byte[] toBytesBinary(String in) {\n        // this may be bigger than we need, but lets be safe.\n        byte[] b = new byte[in.length()];\n        int size = 0;\n        for (int i = 0; i < in.length(); ++i) {\n            char ch = in.charAt(i);\n            // If current char is '\\', we check if next char is 'x', and if it is we must make\n            // sure there're two more chars after 'x', since the String might ends with \"\\x\"\n            // For example, check Bytes.toStringBinary(Bytes.toBytes(1409531337848L))\n            if (ch == '\\\\' && in.length() > i + 3 && in.charAt(i + 1) == 'x') {\n                // ok, take next 2 hex digits.\n                char hd1 = in.charAt(i + 2);\n                char hd2 = in.charAt(i + 3);\n\n                // they need to be A-F0-9:\n                if (!isHexDigit(hd1) ||\n                    !isHexDigit(hd2)) {\n                    // this indicates the \"\\x\" here is not escape code but two real bytes '\\' and 'x'\n                    b[size++] = (byte)ch;\n                    continue;\n                }\n                // turn hex ASCII digit -> number\n                byte d = (byte)((toBinaryFromHex((byte)hd1) << 4) + toBinaryFromHex((byte)hd2));\n\n                b[size++] = d;\n                i += 3; // skip 3\n            } else {\n                b[size++] = (byte)ch;\n            }\n        }\n        // resize:\n        byte[] b2 = new byte[size];\n        System.arraycopy(b, 0, b2, 0, size);\n        return b2;\n    }\n\n    /**\n     * Converts a string to a UTF-8 byte array.\n     *\n     * @param s string\n     * @return the byte array\n     */\n    public static byte[] toBytes(String s) {\n        try {\n            return s.getBytes(HConstants.UTF8_ENCODING);\n        } catch (UnsupportedEncodingException e) {\n            LOG.error(\"UTF-8 not supported?\", e);\n            return null;\n        }\n    }\n\n    /**\n     * Convert a boolean to a byte array. True becomes -1 and false becomes 0.\n     *\n     * @param b value\n     * @return <code>b</code> encoded in a byte array.\n     */\n    public static byte[] toBytes(final boolean b) {\n        return new byte[] {b ? (byte)-1 : (byte)0};\n    }\n\n    /**\n     * Reverses {@link #toBytes(boolean)}\n     *\n     * @param b array\n     * @return True or false.\n     */\n    public static boolean toBoolean(final byte[] b) {\n        if (b.length != 1) {\n            throw new IllegalArgumentException(\"Array has wrong size: \" + b.length);\n        }\n        return b[0] != (byte)0;\n    }\n\n    /**\n     * Convert a long value to a byte array using big-endian.\n     *\n     * @param val value to convert\n     * @return the byte array\n     */\n    public static byte[] toBytes(long val) {\n        byte[] b = new byte[8];\n        for (int i = 7; i > 0; i--) {\n            b[i] = (byte)val;\n            val >>>= 8;\n        }\n        b[0] = (byte)val;\n        return b;\n    }\n\n    /**\n     * Converts a byte array to a long value. Reverses {@link #toBytes(long)}\n     *\n     * @param bytes array\n     * @return the long value\n     */\n    public static long toLong(byte[] bytes) {\n        return toLong(bytes, 0, SIZEOF_LONG);\n    }\n\n    /**\n     * Converts a byte array to a long value. Assumes there will be {@link #SIZEOF_LONG} bytes available.\n     *\n     * @param bytes  bytes\n     * @param offset offset\n     * @return the long value\n     */\n    public static long toLong(byte[] bytes, int offset) {\n        return toLong(bytes, offset, SIZEOF_LONG);\n    }\n\n    /**\n     * Converts a byte array to a long value.\n     *\n     * @param bytes  array of bytes\n     * @param offset offset into array\n     * @param length length of data (must be {@link #SIZEOF_LONG})\n     * @return the long value\n     * @throws IllegalArgumentException if length is not {@link #SIZEOF_LONG} or if there's not enough room in the array\n     *                                  at the offset indicated.\n     */\n    public static long toLong(byte[] bytes, int offset, final int length) {\n        if (length != SIZEOF_LONG || offset + length > bytes.length) {\n            throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);\n        }\n        if (UnsafeComparer.isAvailable()) {\n            return toLongUnsafe(bytes, offset);\n        } else {\n            long l = 0;\n            for (int i = offset; i < offset + length; i++) {\n                l <<= 8;\n                l ^= bytes[i] & 0xFF;\n            }\n            return l;\n        }\n    }\n\n    private static IllegalArgumentException\n    explainWrongLengthOrOffset(final byte[] bytes,\n                               final int offset,\n                               final int length,\n                               final int expectedLength) {\n        String reason;\n        if (length != expectedLength) {\n            reason = \"Wrong length: \" + length + \", expected \" + expectedLength;\n        } else {\n            reason = \"offset (\" + offset + \") + length (\" + length + \") exceed the\"\n                + \" capacity of the array: \" + bytes.length;\n        }\n        return new IllegalArgumentException(reason);\n    }\n\n    /**\n     * Put a long value out to the specified byte array position.\n     *\n     * @param bytes  the byte array\n     * @param offset position in the array\n     * @param val    long to write out\n     * @return incremented offset\n     * @throws IllegalArgumentException if the byte array given doesn't have enough room at the offset specified.\n     */\n    public static int putLong(byte[] bytes, int offset, long val) {\n        if (bytes.length - offset < SIZEOF_LONG) {\n            throw new IllegalArgumentException(\"Not enough room to put a long at\"\n                + \" offset \" + offset + \" in a \" + bytes.length + \" byte array\");\n        }\n        if (UnsafeComparer.isAvailable()) {\n            return putLongUnsafe(bytes, offset, val);\n        } else {\n            for (int i = offset + 7; i > offset; i--) {\n                bytes[i] = (byte)val;\n                val >>>= 8;\n            }\n            bytes[offset] = (byte)val;\n            return offset + SIZEOF_LONG;\n        }\n    }\n\n    /**\n     * Put a long value out to the specified byte array position (Unsafe).\n     *\n     * @param bytes  the byte array\n     * @param offset position in the array\n     * @param val    long to write out\n     * @return incremented offset\n     */\n    public static int putLongUnsafe(byte[] bytes, int offset, long val) {\n        if (UnsafeComparer.littleEndian) {\n            val = Long.reverseBytes(val);\n        }\n        UnsafeComparer.theUnsafe.putLong(bytes, (long)offset +\n            UnsafeComparer.BYTE_ARRAY_BASE_OFFSET, val);\n        return offset + SIZEOF_LONG;\n    }\n\n    /**\n     * Presumes float encoded as IEEE 754 floating-point \"single format\"\n     *\n     * @param bytes byte array\n     * @return Float made from passed byte array.\n     */\n    public static float toFloat(byte[] bytes) {\n        return toFloat(bytes, 0);\n    }\n\n    /**\n     * Presumes float encoded as IEEE 754 floating-point \"single format\"\n     *\n     * @param bytes  array to convert\n     * @param offset offset into array\n     * @return Float made from passed byte array.\n     */\n    public static float toFloat(byte[] bytes, int offset) {\n        return Float.intBitsToFloat(toInt(bytes, offset, SIZEOF_INT));\n    }\n\n    /**\n     * @param bytes  byte array\n     * @param offset offset to write to\n     * @param f      float value\n     * @return New offset in <code>bytes</code>\n     */\n    public static int putFloat(byte[] bytes, int offset, float f) {\n        return putInt(bytes, offset, Float.floatToRawIntBits(f));\n    }\n\n    /**\n     * @param f float value\n     * @return the float represented as byte []\n     */\n    public static byte[] toBytes(final float f) {\n        // Encode it as int\n        return Bytes.toBytes(Float.floatToRawIntBits(f));\n    }\n\n    /**\n     * @param bytes byte array\n     * @return Return double made from passed bytes.\n     */\n    public static double toDouble(final byte[] bytes) {\n        return toDouble(bytes, 0);\n    }\n\n    /**\n     * @param bytes  byte array\n     * @param offset offset where double is\n     * @return Return double made from passed bytes.\n     */\n    public static double toDouble(final byte[] bytes, final int offset) {\n        return Double.longBitsToDouble(toLong(bytes, offset, SIZEOF_LONG));\n    }\n\n    /**\n     * @param bytes  byte array\n     * @param offset offset to write to\n     * @param d      value\n     * @return New offset into array <code>bytes</code>\n     */\n    public static int putDouble(byte[] bytes, int offset, double d) {\n        return putLong(bytes, offset, Double.doubleToLongBits(d));\n    }\n\n    /**\n     * Serialize a double as the IEEE 754 double format output. The resultant array will be 8 bytes long.\n     *\n     * @param d value\n     * @return the double represented as byte []\n     */\n    public static byte[] toBytes(final double d) {\n        // Encode it as a long\n        return Bytes.toBytes(Double.doubleToRawLongBits(d));\n    }\n\n    /**\n     * Convert an int value to a byte array\n     *\n     * @param val value\n     * @return the byte array\n     */\n    public static byte[] toBytes(int val) {\n        byte[] b = new byte[4];\n        for (int i = 3; i > 0; i--) {\n            b[i] = (byte)val;\n            val >>>= 8;\n        }\n        b[0] = (byte)val;\n        return b;\n    }\n\n    /**\n     * Converts a byte array to an int value\n     *\n     * @param bytes byte array\n     * @return the int value\n     */\n    public static int toInt(byte[] bytes) {\n        return toInt(bytes, 0, SIZEOF_INT);\n    }\n\n    /**\n     * Converts a byte array to an int value\n     *\n     * @param bytes  byte array\n     * @param offset offset into array\n     * @return the int value\n     */\n    public static int toInt(byte[] bytes, int offset) {\n        return toInt(bytes, offset, SIZEOF_INT);\n    }\n\n    /**\n     * Converts a byte array to an int value\n     *\n     * @param bytes  byte array\n     * @param offset offset into array\n     * @param length length of int (has to be {@link #SIZEOF_INT})\n     * @return the int value\n     * @throws IllegalArgumentException if length is not {@link #SIZEOF_INT} or if there's not enough room in the array\n     *                                  at the offset indicated.\n     */\n    public static int toInt(byte[] bytes, int offset, final int length) {\n        if (length != SIZEOF_INT || offset + length > bytes.length) {\n            throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);\n        }\n        if (UnsafeComparer.isAvailable()) {\n            return toIntUnsafe(bytes, offset);\n        } else {\n            int n = 0;\n            for (int i = offset; i < (offset + length); i++) {\n                n <<= 8;\n                n ^= bytes[i] & 0xFF;\n            }\n            return n;\n        }\n    }\n\n    /**\n     * Converts a byte array to an int value (Unsafe version)\n     *\n     * @param bytes  byte array\n     * @param offset offset into array\n     * @return the int value\n     */\n    public static int toIntUnsafe(byte[] bytes, int offset) {\n        if (UnsafeComparer.littleEndian) {\n            return Integer.reverseBytes(UnsafeComparer.theUnsafe.getInt(bytes,\n                (long)offset + UnsafeComparer.BYTE_ARRAY_BASE_OFFSET));\n        } else {\n            return UnsafeComparer.theUnsafe.getInt(bytes,\n                (long)offset + UnsafeComparer.BYTE_ARRAY_BASE_OFFSET);\n        }\n    }\n\n    /**\n     * Converts a byte array to an short value (Unsafe version)\n     *\n     * @param bytes  byte array\n     * @param offset offset into array\n     * @return the short value\n     */\n    public static short toShortUnsafe(byte[] bytes, int offset) {\n        if (UnsafeComparer.littleEndian) {\n            return Short.reverseBytes(UnsafeComparer.theUnsafe.getShort(bytes,\n                (long)offset + UnsafeComparer.BYTE_ARRAY_BASE_OFFSET));\n        } else {\n            return UnsafeComparer.theUnsafe.getShort(bytes,\n                (long)offset + UnsafeComparer.BYTE_ARRAY_BASE_OFFSET);\n        }\n    }\n\n    /**\n     * Converts a byte array to an long value (Unsafe version)\n     *\n     * @param bytes  byte array\n     * @param offset offset into array\n     * @return the long value\n     */\n    public static long toLongUnsafe(byte[] bytes, int offset) {\n        if (UnsafeComparer.littleEndian) {\n            return Long.reverseBytes(UnsafeComparer.theUnsafe.getLong(bytes,\n                (long)offset + UnsafeComparer.BYTE_ARRAY_BASE_OFFSET));\n        } else {\n            return UnsafeComparer.theUnsafe.getLong(bytes,\n                (long)offset + UnsafeComparer.BYTE_ARRAY_BASE_OFFSET);\n        }\n    }\n\n    /**\n     * Put an int value out to the specified byte array position.\n     *\n     * @param bytes  the byte array\n     * @param offset position in the array\n     * @param val    int to write out\n     * @return incremented offset\n     * @throws IllegalArgumentException if the byte array given doesn't have enough room at the offset specified.\n     */\n    public static int putInt(byte[] bytes, int offset, int val) {\n        if (bytes.length - offset < SIZEOF_INT) {\n            throw new IllegalArgumentException(\"Not enough room to put an int at\"\n                + \" offset \" + offset + \" in a \" + bytes.length + \" byte array\");\n        }\n        if (UnsafeComparer.isAvailable()) {\n            return putIntUnsafe(bytes, offset, val);\n        } else {\n            for (int i = offset + 3; i > offset; i--) {\n                bytes[i] = (byte)val;\n                val >>>= 8;\n            }\n            bytes[offset] = (byte)val;\n            return offset + SIZEOF_INT;\n        }\n    }\n\n    /**\n     * Put an int value out to the specified byte array position (Unsafe).\n     *\n     * @param bytes  the byte array\n     * @param offset position in the array\n     * @param val    int to write out\n     * @return incremented offset\n     */\n    public static int putIntUnsafe(byte[] bytes, int offset, int val) {\n        if (UnsafeComparer.littleEndian) {\n            val = Integer.reverseBytes(val);\n        }\n        UnsafeComparer.theUnsafe.putInt(bytes, (long)offset +\n            UnsafeComparer.BYTE_ARRAY_BASE_OFFSET, val);\n        return offset + SIZEOF_INT;\n    }\n\n    /**\n     * Convert a short value to a byte array of {@link #SIZEOF_SHORT} bytes long.\n     *\n     * @param val value\n     * @return the byte array\n     */\n    public static byte[] toBytes(short val) {\n        byte[] b = new byte[SIZEOF_SHORT];\n        b[1] = (byte)val;\n        val >>= 8;\n        b[0] = (byte)val;\n        return b;\n    }\n\n    /**\n     * Converts a byte array to a short value\n     *\n     * @param bytes byte array\n     * @return the short value\n     */\n    public static short toShort(byte[] bytes) {\n        return toShort(bytes, 0, SIZEOF_SHORT);\n    }\n\n    /**\n     * Converts a byte array to a short value\n     *\n     * @param bytes  byte array\n     * @param offset offset into array\n     * @return the short value\n     */\n    public static short toShort(byte[] bytes, int offset) {\n        return toShort(bytes, offset, SIZEOF_SHORT);\n    }\n\n    /**\n     * Converts a byte array to a short value\n     *\n     * @param bytes  byte array\n     * @param offset offset into array\n     * @param length length, has to be {@link #SIZEOF_SHORT}\n     * @return the short value\n     * @throws IllegalArgumentException if length is not {@link #SIZEOF_SHORT} or if there's not enough room in the\n     *                                  array at the offset indicated.\n     */\n    public static short toShort(byte[] bytes, int offset, final int length) {\n        if (length != SIZEOF_SHORT || offset + length > bytes.length) {\n            throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_SHORT);\n        }\n        if (UnsafeComparer.isAvailable()) {\n            return toShortUnsafe(bytes, offset);\n        } else {\n            short n = 0;\n            n ^= bytes[offset] & 0xFF;\n            n <<= 8;\n            n ^= bytes[offset + 1] & 0xFF;\n            return n;\n        }\n    }\n\n    /**\n     * This method will get a sequence of bytes from pos -> limit, but will restore pos after.\n     *\n     * @param buf\n     * @return byte array\n     */\n    public static byte[] getBytes(ByteBuffer buf) {\n        int savedPos = buf.position();\n        byte[] newBytes = new byte[buf.remaining()];\n        buf.get(newBytes);\n        buf.position(savedPos);\n        return newBytes;\n    }\n\n    /**\n     * Put a short value out to the specified byte array position.\n     *\n     * @param bytes  the byte array\n     * @param offset position in the array\n     * @param val    short to write out\n     * @return incremented offset\n     * @throws IllegalArgumentException if the byte array given doesn't have enough room at the offset specified.\n     */\n    public static int putShort(byte[] bytes, int offset, short val) {\n        if (bytes.length - offset < SIZEOF_SHORT) {\n            throw new IllegalArgumentException(\"Not enough room to put a short at\"\n                + \" offset \" + offset + \" in a \" + bytes.length + \" byte array\");\n        }\n        if (UnsafeComparer.isAvailable()) {\n            return putShortUnsafe(bytes, offset, val);\n        } else {\n            bytes[offset + 1] = (byte)val;\n            val >>= 8;\n            bytes[offset] = (byte)val;\n            return offset + SIZEOF_SHORT;\n        }\n    }\n\n    /**\n     * Put a short value out to the specified byte array position (Unsafe).\n     *\n     * @param bytes  the byte array\n     * @param offset position in the array\n     * @param val    short to write out\n     * @return incremented offset\n     */\n    public static int putShortUnsafe(byte[] bytes, int offset, short val) {\n        if (UnsafeComparer.littleEndian) {\n            val = Short.reverseBytes(val);\n        }\n        UnsafeComparer.theUnsafe.putShort(bytes, (long)offset +\n            UnsafeComparer.BYTE_ARRAY_BASE_OFFSET, val);\n        return offset + SIZEOF_SHORT;\n    }\n\n    /**\n     * Convert a BigDecimal value to a byte array\n     *\n     * @param val\n     * @return the byte array\n     */\n    public static byte[] toBytes(BigDecimal val) {\n        byte[] valueBytes = val.unscaledValue().toByteArray();\n        byte[] result = new byte[valueBytes.length + SIZEOF_INT];\n        int offset = putInt(result, 0, val.scale());\n        putBytes(result, offset, valueBytes, 0, valueBytes.length);\n        return result;\n    }\n\n    /**\n     * Converts a byte array to a BigDecimal\n     *\n     * @param bytes\n     * @return the char value\n     */\n    public static BigDecimal toBigDecimal(byte[] bytes) {\n        return toBigDecimal(bytes, 0, bytes.length);\n    }\n\n    /**\n     * Converts a byte array to a BigDecimal value\n     *\n     * @param bytes\n     * @param offset\n     * @param length\n     * @return the char value\n     */\n    public static BigDecimal toBigDecimal(byte[] bytes, int offset, final int length) {\n        if (bytes == null || length < SIZEOF_INT + 1 ||\n            (offset + length > bytes.length)) {\n            return null;\n        }\n\n        int scale = toInt(bytes, offset);\n        byte[] tcBytes = new byte[length - SIZEOF_INT];\n        System.arraycopy(bytes, offset + SIZEOF_INT, tcBytes, 0, length - SIZEOF_INT);\n        return new BigDecimal(new BigInteger(tcBytes), scale);\n    }\n\n    /**\n     * Put a BigDecimal value out to the specified byte array position.\n     *\n     * @param bytes  the byte array\n     * @param offset position in the array\n     * @param val    BigDecimal to write out\n     * @return incremented offset\n     */\n    public static int putBigDecimal(byte[] bytes, int offset, BigDecimal val) {\n        if (bytes == null) {\n            return offset;\n        }\n\n        byte[] valueBytes = val.unscaledValue().toByteArray();\n        byte[] result = new byte[valueBytes.length + SIZEOF_INT];\n        offset = putInt(result, offset, val.scale());\n        return putBytes(result, offset, valueBytes, 0, valueBytes.length);\n    }\n\n    /**\n     * @param left  left operand\n     * @param right right operand\n     * @return 0 if equal, < 0 if left is less than right, etc.\n     */\n    public static int compareTo(final byte[] left, final byte[] right) {\n        if (left == null) {\n            return right == null ? 0 : -1;\n        } else if (right == null) {\n            return 1;\n        }\n        return LexicographicalComparerHolder.BEST_COMPARER.\n            compareTo(left, 0, left.length, right, 0, right.length);\n    }\n\n    /**\n     * Lexicographically compare two arrays.\n     *\n     * @param buffer1 left operand\n     * @param buffer2 right operand\n     * @param offset1 Where to start comparing in the left buffer\n     * @param offset2 Where to start comparing in the right buffer\n     * @param length1 How much to compare from the left buffer\n     * @param length2 How much to compare from the right buffer\n     * @return 0 if equal, < 0 if left is less than right, etc.\n     */\n    public static int compareTo(byte[] buffer1, int offset1, int length1,\n                                byte[] buffer2, int offset2, int length2) {\n        return LexicographicalComparerHolder.BEST_COMPARER.\n            compareTo(buffer1, offset1, length1, buffer2, offset2, length2);\n    }\n\n    interface Comparer<T> {\n        abstract public int compareTo(T buffer1, int offset1, int length1,\n                                      T buffer2, int offset2, int length2);\n    }\n\n    @VisibleForTesting\n    static Comparer<byte[]> lexicographicalComparerJavaImpl() {\n        return LexicographicalComparerHolder.PureJavaComparer.INSTANCE;\n    }\n\n    /**\n     * Provides a lexicographical comparer implementation; either a Java implementation or a faster implementation based\n     * on {@link Unsafe}.\n     * <p>\n     * <p>Uses reflection to gracefully fall back to the Java implementation if {@code Unsafe} isn't available.\n     */\n    static class LexicographicalComparerHolder {\n        static final String UNSAFE_COMPARER_NAME =\n            LexicographicalComparerHolder.class.getName() + \"$UnsafeComparer\";\n\n        static final Comparer<byte[]> BEST_COMPARER = getBestComparer();\n\n        /**\n         * Returns the Unsafe-using Comparer, or falls back to the pure-Java implementation if unable to do so.\n         */\n        static Comparer<byte[]> getBestComparer() {\n            try {\n                Class<?> theClass = Class.forName(UNSAFE_COMPARER_NAME);\n\n                // yes, UnsafeComparer does implement Comparer<byte[]>\n                @SuppressWarnings(\"unchecked\")\n                Comparer<byte[]> comparer =\n                    (Comparer<byte[]>)theClass.getEnumConstants()[0];\n                return comparer;\n            } catch (Throwable t) { // ensure we really catch *everything*\n                return lexicographicalComparerJavaImpl();\n            }\n        }\n\n        enum PureJavaComparer implements Comparer<byte[]> {\n            /**\n             *\n             */\n            INSTANCE;\n\n            @Override\n            public int compareTo(byte[] buffer1, int offset1, int length1,\n                                 byte[] buffer2, int offset2, int length2) {\n                // Short circuit equal case\n                if (buffer1 == buffer2 &&\n                    offset1 == offset2 &&\n                    length1 == length2) {\n                    return 0;\n                }\n                // Bring WritableComparator code local\n                int end1 = offset1 + length1;\n                int end2 = offset2 + length2;\n                for (int i = offset1, j = offset2; i < end1 && j < end2; i++, j++) {\n                    int a = (buffer1[i] & 0xff);\n                    int b = (buffer2[j] & 0xff);\n                    if (a != b) {\n                        return a - b;\n                    }\n                }\n                return length1 - length2;\n            }\n        }\n\n        @VisibleForTesting\n        enum UnsafeComparer implements Comparer<byte[]> {\n            /**\n             *\n             */\n            INSTANCE;\n\n            static final Unsafe theUnsafe;\n\n            /**\n             * The offset to the first element in a byte array.\n             */\n            static final int BYTE_ARRAY_BASE_OFFSET;\n\n            static {\n                theUnsafe = (Unsafe)AccessController.doPrivileged(\n                    new PrivilegedAction<Object>() {\n                        @Override\n                        public Object run() {\n                            try {\n                                Field f = Unsafe.class.getDeclaredField(\"theUnsafe\");\n                                f.setAccessible(true);\n                                return f.get(null);\n                            } catch (NoSuchFieldException e) {\n                                // It doesn't matter what we throw;\n                                // it's swallowed in getBestComparer().\n                                throw new Error();\n                            } catch (IllegalAccessException e) {\n                                throw new Error();\n                            }\n                        }\n                    });\n\n                BYTE_ARRAY_BASE_OFFSET = theUnsafe.arrayBaseOffset(byte[].class);\n\n                // sanity check - this should never fail\n                if (theUnsafe.arrayIndexScale(byte[].class) != 1) {\n                    throw new AssertionError();\n                }\n            }\n\n            static final boolean littleEndian =\n                ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN);\n\n            /**\n             * Returns true if x1 is less than x2, when both values are treated as unsigned long.\n             */\n            static boolean lessThanUnsignedLong(long x1, long x2) {\n                return (x1 + Long.MIN_VALUE) < (x2 + Long.MIN_VALUE);\n            }\n\n            /**\n             * Returns true if x1 is less than x2, when both values are treated as unsigned int.\n             */\n            static boolean lessThanUnsignedInt(int x1, int x2) {\n                return (x1 & 0xffffffffL) < (x2 & 0xffffffffL);\n            }\n\n            /**\n             * Returns true if x1 is less than x2, when both values are treated as unsigned short.\n             */\n            static boolean lessThanUnsignedShort(short x1, short x2) {\n                return (x1 & 0xffff) < (x2 & 0xffff);\n            }\n\n            /**\n             * Checks if Unsafe is available\n             *\n             * @return true, if available, false - otherwise\n             */\n            public static boolean isAvailable() {\n                return theUnsafe != null;\n            }\n\n            /**\n             * Lexicographically compare two arrays.\n             *\n             * @param buffer1 left operand\n             * @param buffer2 right operand\n             * @param offset1 Where to start comparing in the left buffer\n             * @param offset2 Where to start comparing in the right buffer\n             * @param length1 How much to compare from the left buffer\n             * @param length2 How much to compare from the right buffer\n             * @return 0 if equal, < 0 if left is less than right, etc.\n             */\n            @Override\n            public int compareTo(byte[] buffer1, int offset1, int length1,\n                                 byte[] buffer2, int offset2, int length2) {\n\n                // Short circuit equal case\n                if (buffer1 == buffer2 &&\n                    offset1 == offset2 &&\n                    length1 == length2) {\n                    return 0;\n                }\n                final int minLength = Math.min(length1, length2);\n                final int minWords = minLength / SIZEOF_LONG;\n                final long offset1Adj = offset1 + BYTE_ARRAY_BASE_OFFSET;\n                final long offset2Adj = offset2 + BYTE_ARRAY_BASE_OFFSET;\n\n                /*\n                 * Compare 8 bytes at a time. Benchmarking shows comparing 8 bytes at a\n                 * time is no slower than comparing 4 bytes at a time even on 32-bit.\n                 * On the other hand, it is substantially faster on 64-bit.\n                 */\n                for (int i = 0; i < minWords * SIZEOF_LONG; i += SIZEOF_LONG) {\n                    long lw = theUnsafe.getLong(buffer1, offset1Adj + (long)i);\n                    long rw = theUnsafe.getLong(buffer2, offset2Adj + (long)i);\n                    long diff = lw ^ rw;\n                    if (littleEndian) {\n                        lw = Long.reverseBytes(lw);\n                        rw = Long.reverseBytes(rw);\n                    }\n                    if (diff != 0) {\n                        return lessThanUnsignedLong(lw, rw) ? -1 : 1;\n                    }\n                }\n                int offset = minWords * SIZEOF_LONG;\n\n                if (minLength - offset >= SIZEOF_INT) {\n                    int il = theUnsafe.getInt(buffer1, offset1Adj + offset);\n                    int ir = theUnsafe.getInt(buffer2, offset2Adj + offset);\n                    if (littleEndian) {\n                        il = Integer.reverseBytes(il);\n                        ir = Integer.reverseBytes(ir);\n                    }\n                    if (il != ir) {\n                        return lessThanUnsignedInt(il, ir) ? -1 : 1;\n                    }\n                    offset += SIZEOF_INT;\n                }\n                if (minLength - offset >= SIZEOF_SHORT) {\n                    short sl = theUnsafe.getShort(buffer1, offset1Adj + offset);\n                    short sr = theUnsafe.getShort(buffer2, offset2Adj + offset);\n                    if (littleEndian) {\n                        sl = Short.reverseBytes(sl);\n                        sr = Short.reverseBytes(sr);\n                    }\n                    if (sl != sr) {\n                        return lessThanUnsignedShort(sl, sr) ? -1 : 1;\n                    }\n                    offset += SIZEOF_SHORT;\n                }\n                if (minLength - offset == 1) {\n                    int a = (buffer1[(int)(offset1 + offset)] & 0xff);\n                    int b = (buffer2[(int)(offset2 + offset)] & 0xff);\n                    if (a != b) {\n                        return a - b;\n                    }\n                }\n                return length1 - length2;\n            }\n        }\n    }\n\n    /**\n     * @param left  left operand\n     * @param right right operand\n     * @return True if equal\n     */\n    public static boolean equals(final byte[] left, final byte[] right) {\n        // Could use Arrays.equals?\n        //noinspection SimplifiableConditionalExpression\n        if (left == right) { return true; }\n        if (left == null || right == null) { return false; }\n        if (left.length != right.length) { return false; }\n        if (left.length == 0) { return true; }\n\n        // Since we're often comparing adjacent sorted data,\n        // it's usual to have equal arrays except for the very last byte\n        // so check that first\n        if (left[left.length - 1] != right[right.length - 1]) { return false; }\n\n        return compareTo(left, right) == 0;\n    }\n\n    public static boolean equals(final byte[] left, int leftOffset, int leftLen,\n                                 final byte[] right, int rightOffset, int rightLen) {\n        // short circuit case\n        if (left == right &&\n            leftOffset == rightOffset &&\n            leftLen == rightLen) {\n            return true;\n        }\n        // different lengths fast check\n        if (leftLen != rightLen) {\n            return false;\n        }\n        if (leftLen == 0) {\n            return true;\n        }\n\n        // Since we're often comparing adjacent sorted data,\n        // it's usual to have equal arrays except for the very last byte\n        // so check that first\n        if (left[leftOffset + leftLen - 1] != right[rightOffset + rightLen - 1]) { return false; }\n\n        return LexicographicalComparerHolder.BEST_COMPARER.\n            compareTo(left, leftOffset, leftLen, right, rightOffset, rightLen) == 0;\n    }\n\n    /**\n     * Return true if the byte array on the right is a prefix of the byte array on the left.\n     */\n    public static boolean startsWith(byte[] bytes, byte[] prefix) {\n        return bytes != null && prefix != null &&\n            bytes.length >= prefix.length &&\n            LexicographicalComparerHolder.BEST_COMPARER.\n                compareTo(bytes, 0, prefix.length, prefix, 0, prefix.length) == 0;\n    }\n\n    /**\n     * @param a lower half\n     * @param b upper half\n     * @return New array that has a in lower half and b in upper half.\n     */\n    public static byte[] add(final byte[] a, final byte[] b) {\n        return add(a, b, HConstants.EMPTY_BYTE_ARRAY);\n    }\n\n    /**\n     * @param a first third\n     * @param b second third\n     * @param c third third\n     * @return New array made from a, b and c\n     */\n    public static byte[] add(final byte[] a, final byte[] b, final byte[] c) {\n        byte[] result = new byte[a.length + b.length + c.length];\n        System.arraycopy(a, 0, result, 0, a.length);\n        System.arraycopy(b, 0, result, a.length, b.length);\n        System.arraycopy(c, 0, result, a.length + b.length, c.length);\n        return result;\n    }\n\n    /**\n     * @param a first array\n     * @param b second array\n     * @return New array merge from a, b\n     */\n    public static byte[][] merge(final byte[][] a, final byte[][] b) {\n        int length = 0;\n        if (a != null) {\n            length += a.length;\n        }\n        if (b != null) {\n            length += b.length;\n        }\n        if (length == 0) {\n            return null;\n        }\n        byte[][] c = new byte[length][];\n        if (a != null) {\n            for (int i = 0; i < a.length; i++) {\n                c[i] = copy(a[i]);\n            }\n        }\n        if (b != null) {\n            for (int i = 0; i < b.length; i++) {\n                c[i + (a == null ? 0 : a.length)] = copy(b[i]);\n            }\n        }\n        return c;\n    }\n\n    /**\n     * @param a      array\n     * @param length amount of bytes to grab\n     * @return First <code>length</code> bytes from <code>a</code>\n     */\n    public static byte[] head(final byte[] a, final int length) {\n        if (a.length < length) {\n            return null;\n        }\n        byte[] result = new byte[length];\n        System.arraycopy(a, 0, result, 0, length);\n        return result;\n    }\n\n    /**\n     * @param a      array\n     * @param length amount of bytes to snarf\n     * @return Last <code>length</code> bytes from <code>a</code>\n     */\n    public static byte[] tail(final byte[] a, final int length) {\n        if (a.length < length) {\n            return null;\n        }\n        byte[] result = new byte[length];\n        System.arraycopy(a, a.length - length, result, 0, length);\n        return result;\n    }\n\n    /**\n     * @param a      array\n     * @param length new array size\n     * @return Value in <code>a</code> plus <code>length</code> prepended 0 bytes\n     */\n    public static byte[] padHead(final byte[] a, final int length) {\n        byte[] padding = new byte[length];\n        for (int i = 0; i < length; i++) {\n            padding[i] = 0;\n        }\n        return add(padding, a);\n    }\n\n    /**\n     * @param a      array\n     * @param length new array size\n     * @return Value in <code>a</code> plus <code>length</code> appended 0 bytes\n     */\n    public static byte[] padTail(final byte[] a, final int length) {\n        byte[] padding = new byte[length];\n        for (int i = 0; i < length; i++) {\n            padding[i] = 0;\n        }\n        return add(a, padding);\n    }\n\n    /**\n     * Split passed range.  Expensive operation relatively.  Uses BigInteger math. Useful splitting ranges for MapReduce\n     * jobs.\n     *\n     * @param a   Beginning of range\n     * @param b   End of range\n     * @param num Number of times to split range.  Pass 1 if you want to split the range in two; i.e. one split.\n     * @return Array of dividing values\n     */\n    public static byte[][] split(final byte[] a, final byte[] b, final int num) {\n        return split(a, b, false, num);\n    }\n\n    /**\n     * Split passed range.  Expensive operation relatively.  Uses BigInteger math. Useful splitting ranges for MapReduce\n     * jobs.\n     *\n     * @param a         Beginning of range\n     * @param b         End of range\n     * @param inclusive Whether the end of range is prefix-inclusive or is considered an exclusive boundary.  Automatic\n     *                  splits are generally exclusive and manual splits with an explicit range utilize an inclusive end\n     *                  of range.\n     * @param num       Number of times to split range.  Pass 1 if you want to split the range in two; i.e. one split.\n     * @return Array of dividing values\n     */\n    public static byte[][] split(final byte[] a, final byte[] b,\n                                 boolean inclusive, final int num) {\n        byte[][] ret = new byte[num + 2][];\n        int i = 0;\n        Iterable<byte[]> iter = iterateOnSplits(a, b, inclusive, num);\n        if (iter == null) { return null; }\n        for (byte[] elem : iter) {\n            ret[i++] = elem;\n        }\n        return ret;\n    }\n\n    /**\n     * Iterate over keys within the passed range, splitting at an [a,b) boundary.\n     */\n    public static Iterable<byte[]> iterateOnSplits(final byte[] a,\n                                                   final byte[] b, final int num) {\n        return iterateOnSplits(a, b, false, num);\n    }\n\n    /**\n     * Iterate over keys within the passed range.\n     */\n    public static Iterable<byte[]> iterateOnSplits(\n        final byte[] a, final byte[] b, boolean inclusive, final int num) {\n        byte[] aPadded;\n        byte[] bPadded;\n        if (a.length < b.length) {\n            aPadded = padTail(a, b.length - a.length);\n            bPadded = b;\n        } else if (b.length < a.length) {\n            aPadded = a;\n            bPadded = padTail(b, a.length - b.length);\n        } else {\n            aPadded = a;\n            bPadded = b;\n        }\n        if (compareTo(aPadded, bPadded) >= 0) {\n            throw new IllegalArgumentException(\"b <= a\");\n        }\n        if (num <= 0) {\n            throw new IllegalArgumentException(\"num cannot be < 0\");\n        }\n        byte[] prependHeader = {1, 0};\n        final BigInteger startBI = new BigInteger(add(prependHeader, aPadded));\n        final BigInteger stopBI = new BigInteger(add(prependHeader, bPadded));\n        BigInteger diffBI = stopBI.subtract(startBI);\n        if (inclusive) {\n            diffBI = diffBI.add(BigInteger.ONE);\n        }\n        final BigInteger splitsBI = BigInteger.valueOf(num + 1);\n        if (diffBI.compareTo(splitsBI) < 0) {\n            return null;\n        }\n        final BigInteger intervalBI;\n        try {\n            intervalBI = diffBI.divide(splitsBI);\n        } catch (Exception e) {\n            LOG.error(\"Exception caught during division\", e);\n            return null;\n        }\n\n        final Iterator<byte[]> iterator = new Iterator<byte[]>() {\n            private int i = -1;\n\n            @Override\n            public boolean hasNext() {\n                return i < num + 1;\n            }\n\n            @Override\n            public byte[] next() {\n                i++;\n                if (i == 0) { return a; }\n                if (i == num + 1) { return b; }\n\n                BigInteger curBI = startBI.add(intervalBI.multiply(BigInteger.valueOf(i)));\n                byte[] padded = curBI.toByteArray();\n                if (padded[1] == 0) { padded = tail(padded, padded.length - 2); } else {\n                    padded = tail(padded, padded.length - 1);\n                }\n                return padded;\n            }\n\n            @Override\n            public void remove() {\n                throw new UnsupportedOperationException();\n            }\n\n        };\n\n        return new Iterable<byte[]>() {\n            @Override\n            public Iterator<byte[]> iterator() {\n                return iterator;\n            }\n        };\n    }\n\n    /**\n     * @param bytes  array to hash\n     * @param offset offset to start from\n     * @param length length to hash\n     */\n    public static int hashCode(byte[] bytes, int offset, int length) {\n        int hash = 1;\n        for (int i = offset; i < offset + length; i++) { hash = (31 * hash) + (int)bytes[i]; }\n        return hash;\n    }\n\n    /**\n     * @param t operands\n     * @return Array of byte arrays made from passed array of Text\n     */\n    public static byte[][] toByteArrays(final String[] t) {\n        byte[][] result = new byte[t.length][];\n        for (int i = 0; i < t.length; i++) {\n            result[i] = Bytes.toBytes(t[i]);\n        }\n        return result;\n    }\n\n    /**\n     * @param column operand\n     * @return A byte array of a byte array where first and only entry is <code>column</code>\n     */\n    public static byte[][] toByteArrays(final String column) {\n        return toByteArrays(toBytes(column));\n    }\n\n    /**\n     * @param column operand\n     * @return A byte array of a byte array where first and only entry is <code>column</code>\n     */\n    public static byte[][] toByteArrays(final byte[] column) {\n        byte[][] result = new byte[1][];\n        result[0] = column;\n        return result;\n    }\n\n    /**\n     * Bytewise binary increment/deincrement of long contained in byte array on given amount.\n     *\n     * @param value  - array of bytes containing long (length <= SIZEOF_LONG)\n     * @param amount value will be incremented on (deincremented if negative)\n     * @return array of bytes containing incremented long (length == SIZEOF_LONG)\n     */\n    public static byte[] incrementBytes(byte[] value, long amount) {\n        byte[] val = value;\n        if (val.length < SIZEOF_LONG) {\n            // Hopefully this doesn't happen too often.\n            byte[] newvalue;\n            if (val[0] < 0) {\n                newvalue = new byte[] {-1, -1, -1, -1, -1, -1, -1, -1};\n            } else {\n                newvalue = new byte[SIZEOF_LONG];\n            }\n            System.arraycopy(val, 0, newvalue, newvalue.length - val.length,\n                val.length);\n            val = newvalue;\n        } else if (val.length > SIZEOF_LONG) {\n            throw new IllegalArgumentException(\"Increment Bytes - value too big: \" +\n                val.length);\n        }\n        if (amount == 0) { return val; }\n        if (val[0] < 0) {\n            return binaryIncrementNeg(val, amount);\n        }\n        return binaryIncrementPos(val, amount);\n    }\n\n    /* increment/deincrement for positive value */\n    private static byte[] binaryIncrementPos(byte[] value, long amount) {\n        long amo = amount;\n        int sign = 1;\n        if (amount < 0) {\n            amo = -amount;\n            sign = -1;\n        }\n        for (int i = 0; i < value.length; i++) {\n            int cur = ((int)amo % 256) * sign;\n            amo = (amo >> 8);\n            int val = value[value.length - i - 1] & 0x0ff;\n            int total = val + cur;\n            if (total > 255) {\n                amo += sign;\n                total %= 256;\n            } else if (total < 0) {\n                amo -= sign;\n            }\n            value[value.length - i - 1] = (byte)total;\n            if (amo == 0) { return value; }\n        }\n        return value;\n    }\n\n    /* increment/deincrement for negative value */\n    private static byte[] binaryIncrementNeg(byte[] value, long amount) {\n        long amo = amount;\n        int sign = 1;\n        if (amount < 0) {\n            amo = -amount;\n            sign = -1;\n        }\n        for (int i = 0; i < value.length; i++) {\n            int cur = ((int)amo % 256) * sign;\n            amo = (amo >> 8);\n            int val = ((~value[value.length - i - 1]) & 0x0ff) + 1;\n            int total = cur - val;\n            if (total >= 0) {\n                amo += sign;\n            } else if (total < -256) {\n                amo -= sign;\n                total %= 256;\n            }\n            value[value.length - i - 1] = (byte)total;\n            if (amo == 0) { return value; }\n        }\n        return value;\n    }\n\n    /**\n     * Writes a string as a fixed-size field, padded with zeros.\n     */\n    public static void writeStringFixedSize(final DataOutput out, String s,\n                                            int size) throws IOException {\n        byte[] b = toBytes(s);\n        if (b.length > size) {\n            throw new IOException(\"Trying to write \" + b.length + \" bytes (\" +\n                toStringBinary(b) + \") into a field of length \" + size);\n        }\n\n        out.writeBytes(s);\n        for (int i = 0; i < size - s.length(); ++i) { out.writeByte(0); }\n    }\n\n    /**\n     * Reads a fixed-size field and interprets it as a string padded with zeros.\n     */\n    public static String readStringFixedSize(final DataInput in, int size)\n        throws IOException {\n        byte[] b = new byte[size];\n        in.readFully(b);\n        int n = b.length;\n        while (n > 0 && b[n - 1] == 0) { --n; }\n\n        return toString(b, 0, n);\n    }\n\n    /**\n     * Search sorted array \"a\" for byte \"key\". I can't remember if I wrote this or copied it from somewhere. (mcorgan)\n     *\n     * @param a         Array to search. Entries must be sorted and unique.\n     * @param fromIndex First index inclusive of \"a\" to include in the search.\n     * @param toIndex   Last index exclusive of \"a\" to include in the search.\n     * @param key       The byte to search for.\n     * @return The index of key if found. If not found, return -(index + 1), where negative indicates \"not found\" and\n     * the \"index + 1\" handles the \"-0\" case.\n     */\n    public static int unsignedBinarySearch(byte[] a, int fromIndex, int toIndex, byte key) {\n        int unsignedKey = key & 0xff;\n        int low = fromIndex;\n        int high = toIndex - 1;\n\n        while (low <= high) {\n            int mid = (low + high) >>> 1;\n            int midVal = a[mid] & 0xff;\n\n            if (midVal < unsignedKey) {\n                low = mid + 1;\n            } else if (midVal > unsignedKey) {\n                high = mid - 1;\n            } else {\n                return mid; // key found\n            }\n        }\n        return -(low + 1); // key not found.\n    }\n\n    /**\n     * Treat the byte[] as an unsigned series of bytes, most significant bits first.  Start by adding 1 to the rightmost\n     * bit/byte and carry over all overflows to the more significant bits/bytes.\n     *\n     * @param input The byte[] to increment.\n     * @return The incremented copy of \"in\".  May be same length or 1 byte longer.\n     */\n    public static byte[] unsignedCopyAndIncrement(final byte[] input) {\n        byte[] copy = copy(input);\n        if (copy == null) {\n            throw new IllegalArgumentException(\"cannot increment null array\");\n        }\n        for (int i = copy.length - 1; i >= 0; --i) {\n            if (copy[i] == -1) {// -1 is all 1-bits, which is the unsigned maximum\n                copy[i] = 0;\n            } else {\n                ++copy[i];\n                return copy;\n            }\n        }\n        // we maxed out the array\n        byte[] out = new byte[copy.length + 1];\n        out[0] = 1;\n        System.arraycopy(copy, 0, out, 1, copy.length);\n        return out;\n    }\n\n    /**\n     * Copy the byte array given in parameter and return an instance of a new byte array with the same length and the\n     * same content.\n     *\n     * @param bytes the byte array to duplicate\n     * @return a copy of the given byte array\n     */\n    public static byte[] copy(byte[] bytes) {\n        if (bytes == null) { return null; }\n        byte[] result = new byte[bytes.length];\n        System.arraycopy(bytes, 0, result, 0, bytes.length);\n        return result;\n    }\n\n    public static List<byte[]> getUtf8ByteArrays(List<String> strings) {\n        List<byte[]> byteArrays = Lists.newArrayListWithCapacity(CollectionUtils.nullSafeSize(strings));\n        for (String s : IterableUtils.nullSafe(strings)) {\n            byteArrays.add(Bytes.toBytes(s));\n        }\n        return byteArrays;\n    }\n\n    public static boolean isSorted(Collection<byte[]> arrays) {\n        byte[] previous = new byte[0];\n        for (byte[] array : IterableUtils.nullSafe(arrays)) {\n            if (Bytes.compareTo(previous, array) > 0) {\n                return false;\n            }\n            previous = array;\n        }\n        return true;\n    }\n\n    public static boolean equals(List<byte[]> a, List<byte[]> b) {\n        if (a == null) {\n            if (b == null) {\n                return true;\n            }\n            return false;\n        }\n        if (b == null) {\n            return false;\n        }\n        if (a.size() != b.size()) {\n            return false;\n        }\n        for (int i = 0; i < a.size(); ++i) {\n            if (!Bytes.equals(a.get(i), b.get(i))) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    /**\n     * @param b Array of presumed UTF-8 encoded byte array.\n     * @return a collection of String made from <code>b</code>\n     */\n    public static Collection<String> toStringCollection(final byte[][] b) {\n        if (b == null) {\n            return null;\n        }\n        return Collections2.transform(Arrays.asList(b),\n            new Function<byte[], String>() {\n                @Override\n                public String apply(byte[] a) {\n                    return Bytes.toString(a);\n                }\n            });\n    }\n\n    /**\n     * Create a max byte array with the specified max byte count\n     *\n     * @param maxByteCount the length of returned byte array\n     * @return the created max byte array\n     */\n    public static byte[] createMaxByteArray(int maxByteCount) {\n        byte[] maxByteArray = new byte[maxByteCount];\n        for (int i = 0; i < maxByteArray.length; i++) {\n            maxByteArray[i] = (byte)0xff;\n        }\n        return maxByteArray;\n    }\n\n    /**\n     * Create a byte array which is multiple given bytes\n     *\n     * @param srcBytes\n     * @param multiNum\n     * @return byte array\n     */\n    public static byte[] multiple(byte[] srcBytes, int multiNum) {\n        if (multiNum <= 0) {\n            return new byte[0];\n        }\n        byte[] result = new byte[srcBytes.length * multiNum];\n        for (int i = 0; i < multiNum; i++) {\n            System.arraycopy(srcBytes, 0, result, i * srcBytes.length,\n                srcBytes.length);\n        }\n        return result;\n\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/util/CollectionUtils.java",
    "content": "/**\n * Copyright The Apache Software Foundation\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with this\n * work for additional information regarding copyright ownership. The ASF\n * licenses this file to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\npackage com.alibaba.tac.engine.util;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.List;\n\n/**\n * Utility methods for dealing with Collections, including treating null\n * collections as empty.\n */\npublic class CollectionUtils {\n\n  private static final List<Object> EMPTY_LIST = Collections\n      .unmodifiableList(new ArrayList<Object>(0));\n\n  @SuppressWarnings(\"unchecked\")\n  public static <T> Collection<T> nullSafe(Collection<T> in) {\n    if (in == null) {\n      return (Collection<T>) EMPTY_LIST;\n    }\n    return in;\n  }\n\n  /************************ size ************************************/\n\n  public static <T> int nullSafeSize(Collection<T> collection) {\n    if (collection == null) {\n      return 0;\n    }\n    return collection.size();\n  }\n\n  public static <A, B> boolean nullSafeSameSize(Collection<A> a, Collection<B> b) {\n    return nullSafeSize(a) == nullSafeSize(b);\n  }\n\n  /*************************** empty ****************************************/\n\n  public static <T> boolean isEmpty(Collection<T> collection) {\n    return collection == null || collection.isEmpty();\n  }\n\n  public static <T> boolean notEmpty(Collection<T> collection) {\n    return !isEmpty(collection);\n  }\n\n  /************************ first/last **************************/\n\n  public static <T> T getFirst(Collection<T> collection) {\n    if (CollectionUtils.isEmpty(collection)) {\n      return null;\n    }\n    for (T t : collection) {\n      return t;\n    }\n    return null;\n  }\n\n  /**\n   * @param list any list\n   * @return -1 if list is empty, otherwise the max index\n   */\n  public static int getLastIndex(List<?> list) {\n    if (isEmpty(list)) {\n      return -1;\n    }\n    return list.size() - 1;\n  }\n\n  /**\n   * @param list\n   * @param index the index in question\n   * @return true if it is the last index or if list is empty and -1 is passed\n   *         for the index param\n   */\n  public static boolean isLastIndex(List<?> list, int index) {\n    return index == getLastIndex(list);\n  }\n\n  public static <T> T getLast(List<T> list) {\n    if (isEmpty(list)) {\n      return null;\n    }\n    return list.get(list.size() - 1);\n  }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/util/HConstants.java",
    "content": "/**\n * Copyright 2010 The Apache Software Foundation\n *\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.tac.engine.util;\n\n/**\n * HConstants holds a bunch of HBase-related constants\n */\npublic final class HConstants {\n\n\n  /**\n   * An empty instance.\n   */\n  public static final byte [] EMPTY_BYTE_ARRAY = new byte [0];\n\n\n  /** When we encode strings, we always specify UTF8 encoding */\n  public static final String UTF8_ENCODING = \"UTF-8\";\n\n  private HConstants() {\n    // Can't be instantiated with this ctor.\n  }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/util/IterableUtils.java",
    "content": "/**\n * Copyright The Apache Software Foundation\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with this\n * work for additional information regarding copyright ownership. The ASF\n * licenses this file to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\npackage com.alibaba.tac.engine.util;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\n\n/**\n * Utility methods for Iterable including null-safe handlers.\n */\npublic class IterableUtils {\n\n  private static final List<Object> EMPTY_LIST = Collections\n      .unmodifiableList(new ArrayList<Object>(0));\n\n  @SuppressWarnings(\"unchecked\")\n  public static <T> Iterable<T> nullSafe(Iterable<T> in) {\n    if (in == null) {\n      return (List<T>) EMPTY_LIST;\n    }\n    return in;\n  }\n\n}"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/util/TacCompressUtils.java",
    "content": "package com.alibaba.tac.engine.util;\n\nimport java.io.BufferedInputStream;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.FileOutputStream;\nimport java.util.function.Consumer;\nimport java.util.stream.Stream;\nimport java.util.zip.CRC32;\nimport java.util.zip.CheckedOutputStream;\nimport java.util.zip.ZipEntry;\nimport java.util.zip.ZipOutputStream;\n\npublic class TacCompressUtils {\n\n    public static final String EXT = \".zip\";\n    private static final String BASE_DIR = \"\";\n\n    // 符号\"/\"用来作为目录标识判断符\n    private static final String PATH = \"/\";\n    private static final int BUFFER = 1024;\n\n    /**\n     * compress\n     *\n     * @param srcFile\n     * @param destFile\n     * @throws Exception\n     */\n    public static void compress(File srcFile, File destFile) throws Exception {\n\n        // CRC32 check\n        CheckedOutputStream cos = new CheckedOutputStream(new FileOutputStream(\n            destFile), new CRC32());\n\n        ZipOutputStream zos = new ZipOutputStream(cos);\n        zos.setComment(new String(\"comment\"));\n        compress(srcFile, zos, BASE_DIR);\n\n        zos.flush();\n        zos.close();\n    }\n\n    /**\n     * compress\n     *\n     * @param srcFile\n     * @param destPath\n     * @throws Exception\n     */\n    public static void compress(File srcFile, String destPath) throws Exception {\n        compress(srcFile, new File(destPath));\n    }\n\n    /**\n     * compress\n     *\n     * @param srcFile\n     * @param zos      ZipOutputStream\n     * @param basePath\n     * @throws Exception\n     */\n    private static void compress(File srcFile, ZipOutputStream zos,\n                                 String basePath) throws Exception {\n        if (srcFile.isDirectory()) {\n            compressDir(srcFile, zos, basePath);\n        } else {\n            compressFile(srcFile, zos, basePath);\n        }\n    }\n\n    /**\n     * compress\n     *\n     * @param srcPath\n     * @param destPath\n     */\n    public static void compress(String srcPath, String destPath)\n        throws Exception {\n        File srcFile = new File(srcPath);\n\n        compress(srcFile, destPath);\n    }\n\n    /**\n     * compressDir\n     *\n     * @param dir\n     * @param zos      outPutStream\n     * @param basePath\n     * @throws Exception\n     */\n    private static void compressDir(File dir, ZipOutputStream zos,\n                                    String basePath) throws Exception {\n\n        File[] files = dir.listFiles();\n        // create empty directory\n        if (files.length < 1) {\n            ZipEntry entry = new ZipEntry(basePath + dir.getName() + PATH);\n            zos.putNextEntry(entry);\n            zos.closeEntry();\n        }\n        for (File file : files) {\n\n            compress(file, zos, basePath + dir.getName() + PATH);\n        }\n\n    }\n\n    /**\n     * compress file\n     *\n     * @param file\n     * @param zos  ZipOutputStream\n     * @param dir\n     * @throws Exception\n     */\n    private static void compressFile(File file, ZipOutputStream zos, String dir)\n        throws Exception {\n\n        ZipEntry entry = new ZipEntry(dir + file.getName());\n\n        zos.putNextEntry(entry);\n\n        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(\n            file));\n\n        int count;\n        byte data[] = new byte[BUFFER];\n        while ((count = bis.read(data, 0, BUFFER)) != -1) {\n            zos.write(data, 0, count);\n        }\n        bis.close();\n\n        zos.closeEntry();\n    }\n}"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/util/TacLogUtils.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\n/**\n *\n */\npackage com.alibaba.tac.engine.util;\n\nimport org.slf4j.Logger;\n\n/**\n *\n */\npublic class TacLogUtils {\n\n    /**\n     *\n     *\n     * @param logger\n     * @param format\n     * @param arguments\n     */\n    public static void infoRate(Logger logger, String format, Object... arguments) {\n\n        logger.info(format, arguments);\n\n    }\n\n    /**\n     *\n     *\n     * @param logger\n     * @param format\n     * @param arguments\n     */\n    public static void warnRate(Logger logger, String format, Object... arguments) {\n        logger.warn(format, arguments);\n    }\n\n    /**\n     *\n     *\n     * @param logger\n     * @param format\n     * @param arguments\n     */\n    public static void traceRate(Logger logger, String format, Object... arguments) {\n        logger.trace(format, arguments);\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/util/ThreadPoolUtils.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.util;\n\nimport java.util.concurrent.*;\nimport java.util.concurrent.atomic.AtomicInteger;\n\n/**\n * @author jinshuan.li on 2018/8/19 15:47.\n */\npublic class ThreadPoolUtils {\n\n    /**\n     *  create thrad pool\n     * @param nThreads\n     * @param threadName\n     * @return\n     */\n    public static ExecutorService createThreadPool(int nThreads, String threadName) {\n\n        ExecutorService executorService = new ThreadPoolExecutor(nThreads, 300, 5, TimeUnit.MINUTES, new\n            LinkedBlockingQueue<>(), new ThreadFactory() {\n\n            private AtomicInteger count = new AtomicInteger(0);\n\n            @Override\n            public Thread newThread(Runnable r) {\n                return new Thread(r, threadName + \"_\" + count.incrementAndGet());\n            }\n        });\n        return executorService;\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/java/com/alibaba/tac/engine/util/ThreadUtils.java",
    "content": "/*\n *   MIT License\n *\n *   Copyright (c) 2016 Alibaba Group\n *\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\npackage com.alibaba.tac.engine.util;\n\nimport org.apache.commons.collections.CollectionUtils;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.*;\n\n/**\n * @author jinshuan.li\n */\npublic class ThreadUtils {\n\n    public static ExecutorService executorService = ThreadPoolUtils.createThreadPool(30, \"tac_batch_process\");\n\n    /**\n     * execute tasks and wait all complete\n     *\n     * @param tasks\n     * @throws InterruptedException\n     * @throws ExecutionException\n     */\n    public static <T> List<T> runWaitCompleteTask(List<Callable<T>> tasks, Long timeout, TimeUnit timeUnit)\n        throws Exception {\n\n        if (CollectionUtils.isEmpty(tasks)) {\n            return new ArrayList<T>();\n        }\n\n        CompletionService<T> completionService = new ExecutorCompletionService<T>(executorService);\n\n        for (Callable<T> runnable : tasks) {\n            completionService.submit(runnable);\n\n        }\n\n        Future<T> resultFuture = null;\n\n        List<T> result = new ArrayList<T>();\n\n        for (int i = 0; i < tasks.size(); i++) {\n            resultFuture = completionService.take();\n            result.add(resultFuture.get(timeout, timeUnit));\n        }\n        return result;\n\n    }\n\n    public static <T> Future<T> runAsync(Callable<T> task) {\n        return executorService.submit(task);\n    }\n\n    public static <T> Future<T> runAsync(ExecutorService executor, Callable<T> task) {\n        return executor.submit(task);\n    }\n\n    public static void sleep(long time) {\n\n        try {\n            Thread.sleep(time);\n        } catch (InterruptedException e) {\n\n        }\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/main/resources/META-INF/spring.factories",
    "content": "# Auto Configure\norg.springframework.boot.autoconfigure.EnableAutoConfiguration=\\\n  com.alibaba.tac.engine.autoconfigure.TacAutoConfiguration\n"
  },
  {
    "path": "tac-engine/src/main/resources/tac/default-logback-spring.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n    <!-- https://github.com/spring-projects/spring-boot/blob/v1.4.2.RELEASE/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xml -->\n    <include resource=\"org/springframework/boot/logging/logback/defaults.xml\"/>\n\n    <property name=\"APP_NAME\" value=\"tac\"/>\n    <property name=\"LOG_PATH\" value=\"${user.home}/${APP_NAME}/logs\"/>\n    <property name=\"LOG_FILE\" value=\"${LOG_PATH}/application.log\"/>\n    <property name=\"TAC_USER_LOG_FILE\" value=\"${LOG_PATH}/tac-user.log\"/>\n\n    <appender name=\"APPLICATION\"\n              class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <file>${LOG_FILE}</file>\n        <encoder>\n            <pattern>${FILE_LOG_PATTERN}</pattern>\n        </encoder>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}</fileNamePattern>\n            <maxHistory>60</maxHistory>\n        </rollingPolicy>\n    </appender>\n\n\n    <appender name=\"TAC-USER-LOG\"\n              class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <file>${TAC_USER_LOG_FILE}</file>\n        <encoder>\n            <pattern>%m%n</pattern>\n        </encoder>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <fileNamePattern>${TAC_USER_LOG_FILE}.%d{yyyy-MM-dd}</fileNamePattern>\n            <maxHistory>60</maxHistory>\n        </rollingPolicy>\n    </appender>\n\n    <appender name=\"CONSOLE\" class=\"ch.qos.logback.core.ConsoleAppender\">\n        <encoder>\n            <pattern>${CONSOLE_LOG_PATTERN}</pattern>\n            <charset>utf8</charset>\n        </encoder>\n    </appender>\n\n    <springProfile name=\"debug\">\n        <logger name=\"com.alibaba.tac\" level=\"DEBUG\" additivity=\"false\">\n            <appender-ref ref=\"APPLICATION\"/>\n            <appender-ref ref=\"CONSOLE\"/>\n        </logger>\n\n        <root level=\"DEBUG\">\n            <appender-ref ref=\"APPLICATION\"/>\n            <appender-ref ref=\"CONSOLE\"/>\n        </root>\n    </springProfile>\n\n    <springProfile name=\"!debug\">\n        <logger name=\"com.alibaba.tac\" level=\"INFO\" additivity=\"false\">\n            <appender-ref ref=\"APPLICATION\"/>\n            <appender-ref ref=\"CONSOLE\"/>\n\n        </logger>\n        <root level=\"INFO\">\n            <appender-ref ref=\"APPLICATION\"/>\n            <appender-ref ref=\"CONSOLE\"/>\n        </root>\n    </springProfile>\n\n    <logger name=\"TAC-USER-LOG\" level=\"INFO\" additivity=\"false\">\n        <appender-ref ref=\"TAC-USER-LOG\"/>\n    </logger>\n\n    <logger name=\"org.thymeleaf\" level=\"ERROR\" additivity=\"false\">\n        <appender-ref ref=\"APPLICATION\"/>\n    </logger>\n\n\n    <logger name=\"org.springframework\" level=\"ERROR\" additivity=\"false\">\n        <appender-ref ref=\"APPLICATION\"/>\n    </logger>\n\n\n</configuration>"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/engine/common/redis/RedisSequenceCounterTest.java",
    "content": "package com.alibaba.tac.engine.common.redis;\n\nimport com.alibaba.tac.engine.test.TacEnginTest;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\nimport javax.annotation.Resource;\n\nimport static org.junit.Assert.*;\n\n/**\n * @author jinshuan.li 01/03/2018 11:01\n */\npublic class RedisSequenceCounterTest extends TacEnginTest {\n\n\n    @Resource\n    RedisSequenceCounter redisSequenceCounter;\n\n    @Before\n    public void setUp() throws Exception {\n\n    }\n\n    @Test\n    public void set() {\n\n        redisSequenceCounter.set(10);\n        Long data = redisSequenceCounter.get();\n\n        assertTrue(data.equals(10L));\n    }\n\n    @Test\n    public void get() {\n\n\n    }\n\n    @Test\n    public void incrementAndGet() {\n\n        long data = redisSequenceCounter.incrementAndGet();\n\n\n        Long data2 = redisSequenceCounter.get();\n        //assertTrue(data==11);\n    }\n\n    @Test\n    public void increBy() {\n    }\n}"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/engine/inst/service/redis/RedisMsInstFileServiceTest.java",
    "content": "package com.alibaba.tac.engine.inst.service.redis;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.service.DevMsInstFileService;\nimport com.alibaba.tac.engine.test.TacEnginTest;\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport javax.annotation.Resource;\n\nimport static org.junit.Assert.*;\n\n/**\n * @author jinshuan.li 01/03/2018 13:38\n */\npublic class RedisMsInstFileServiceTest extends TacEnginTest {\n\n    @Resource\n    private RedisMsInstFileService redisMsInstFileService;\n\n    @Resource\n    private DevMsInstFileService devMsInstFileService;\n\n    private TacInst tacInst;\n\n    @Before\n    public void setUp() throws Exception {\n\n        tacInst = new TacInst();\n        tacInst.setJarVersion(\"abcccc\");\n        tacInst.setId(111);\n        tacInst.setMsCode(\"abc\");\n        tacInst.setName(\"abc-test\");\n    }\n\n    @Test\n    public void getInstanceFile() {\n\n        byte[] instanceFile = redisMsInstFileService.getInstanceFile(tacInst.getId());\n\n        assertNotNull(instanceFile);\n    }\n\n    @Test\n    public void saveInstanceFile() {\n\n        Boolean aBoolean = redisMsInstFileService.saveInstanceFile(tacInst,\n            devMsInstFileService.getInstanceFile(tacInst.getMsCode()));\n\n        assertTrue(aBoolean);\n    }\n}"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/engine/inst/service/redis/RedisMsInstServiceTest.java",
    "content": "package com.alibaba.tac.engine.inst.service.redis;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.test.TacEnginTest;\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport javax.annotation.Resource;\nimport java.util.List;\n\nimport static org.junit.Assert.*;\n\n/**\n * @author jinshuan.li 01/03/2018 14:42\n */\npublic class RedisMsInstServiceTest extends TacEnginTest {\n\n\n    @Resource\n    private RedisMsInstService redisMsInstService;\n\n    TacInst tacInst = new TacInst();\n\n    @Before\n    public void before() {\n\n        tacInst.setJarVersion(\"xxxxx\");\n        tacInst.setMsCode(\"abc\");\n        tacInst.setName(\"test\");\n    }\n\n    @Test\n    public void getAllTacMsInsts() {\n\n        List<TacInst> allTacMsInsts = redisMsInstService.getAllTacMsInsts();\n\n        assertNotNull(allTacMsInsts);\n    }\n\n    @Test\n    public void getTacMsInst() {\n\n        TacInst tacMsInst = redisMsInstService.getTacMsInst(1L);\n        assertNotNull(tacMsInst);\n    }\n\n    @Test\n    public void createTacMsInst() {\n\n        TacInst tacMsInst = redisMsInstService.createTacMsInst(tacInst);\n\n        assertTrue(tacMsInst.getId() > 0);\n    }\n\n    @Test\n    public void removeMsInst() {\n        Boolean success = redisMsInstService.removeMsInst(1L);\n        assertTrue(success);\n\n        TacInst tacMsInst = redisMsInstService.getTacMsInst(1L);\n\n        assertNull(tacMsInst);\n    }\n}"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/engine/ms/service/redis/RedisMsPublisherTest.java",
    "content": "package com.alibaba.tac.engine.ms.service.redis;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.service.DevMsInstFileService;\nimport com.alibaba.tac.engine.inst.service.IMsInstService;\nimport com.alibaba.tac.engine.test.TacEnginTest;\nimport org.junit.Test;\n\nimport javax.annotation.Resource;\nimport java.util.concurrent.CountDownLatch;\n\nimport static org.junit.Assert.*;\n\n/**\n * @author jinshuan.li 01/03/2018 16:22\n */\npublic class RedisMsPublisherTest extends TacEnginTest {\n\n    @Resource\n    RedisMsPublisher redisMsPublisher;\n\n    @Resource\n    IMsInstService iMsInstService;\n\n    @Resource\n    private DevMsInstFileService devMsInstFileService;\n\n    CountDownLatch countDownLatch = new CountDownLatch(1);\n\n    @Test\n    public void publish() throws InterruptedException {\n\n        TacInst abc = iMsInstService.getTacMsInst(1L);\n        byte[] abcs = devMsInstFileService.getInstanceFile(\"abc\");\n        Boolean publish = redisMsPublisher.publish(abc, abcs);\n\n        assertTrue(publish);\n\n        countDownLatch.await();\n    }\n\n    @Test\n    public void offline() throws InterruptedException {\n        TacInst abc = iMsInstService.getTacMsInst(1L);\n        Boolean offline = redisMsPublisher.offline(abc);\n        assertTrue(offline);\n\n        countDownLatch.await();\n    }\n}"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/engine/ms/service/redis/RedisMsServiceTest.java",
    "content": "package com.alibaba.tac.engine.ms.service.redis;\n\nimport com.alibaba.tac.engine.ms.domain.TacMsDO;\nimport com.alibaba.tac.engine.ms.domain.TacMsStatus;\nimport com.alibaba.tac.engine.test.TacEnginTest;\nimport org.apache.commons.collections4.CollectionUtils;\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport javax.annotation.Resource;\nimport java.util.List;\n\nimport static org.junit.Assert.*;\n\n/**\n * @author jinshuan.li 01/03/2018 14:53\n */\npublic class RedisMsServiceTest extends TacEnginTest {\n\n    @Resource\n    private RedisMsService redisMsService;\n\n    TacMsDO tacMsDO = new TacMsDO();\n\n    @Before\n    public void setUp() throws Exception {\n\n        tacMsDO.setCode(\"test\");\n        tacMsDO.setName(\"ljinshuan\");\n\n    }\n\n    @Test\n    public void createMs() {\n\n        redisMsService.createMs(tacMsDO);\n\n        TacMsDO ms = redisMsService.getMs(tacMsDO.getCode());\n\n        assertNotNull(ms);\n    }\n\n    @Test\n    public void removeMs() {\n\n        redisMsService.removeMs(tacMsDO.getCode());\n\n        TacMsDO ms = redisMsService.getMs(tacMsDO.getCode());\n\n        assertNull(ms);\n    }\n\n    @Test\n    public void invalidMs() {\n\n        redisMsService.invalidMs(tacMsDO.getCode());\n\n        TacMsDO ms = redisMsService.getMs(tacMsDO.getCode());\n\n        assertTrue(ms == null || ms.getStatus().equals(TacMsStatus.INVALID.code()));\n    }\n\n    @Test\n    public void updateMs() {\n        tacMsDO.setName(\"updated\");\n\n        redisMsService.updateMs(tacMsDO.getCode(), tacMsDO);\n\n        TacMsDO ms = redisMsService.getMs(tacMsDO.getCode());\n\n        assertEquals(ms.getName(), \"updated\");\n    }\n\n    @Test\n    public void getMs() {\n\n        TacMsDO ms = redisMsService.getMs(tacMsDO.getCode());\n\n        assertNull(ms);\n    }\n\n    @Test\n    public void getAllMs() {\n\n        List<TacMsDO> allMs = redisMsService.getAllMs();\n\n        assertTrue(CollectionUtils.isNotEmpty(allMs));\n    }\n\n}"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/engine/service/GitLabFeatureTest.java",
    "content": "package com.alibaba.tac.engine.service;\n\nimport com.alibaba.tac.engine.code.CodeCompileService;\nimport com.alibaba.tac.engine.git.GitRepoService;\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.service.IMsInstService;\nimport com.alibaba.tac.engine.ms.domain.TacMsDO;\nimport com.alibaba.tac.engine.ms.service.IMsPublisher;\nimport com.alibaba.tac.engine.ms.service.IMsService;\nimport com.alibaba.tac.engine.test.TacEnginTest;\nimport com.alibaba.tac.sdk.error.ServiceException;\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport javax.annotation.Resource;\n\nimport java.io.IOException;\nimport java.util.List;\n\nimport static org.junit.Assert.*;\n\n/**\n * @author jinshuan.li 08/05/2018 10:32\n */\npublic class GitLabFeatureTest extends TacEnginTest {\n\n    @Resource\n    private IMsService msService;\n\n    @Resource\n    private IMsInstService msInstService;\n\n    @Resource\n    private GitRepoService gitRepoService;\n\n    @Resource\n    private CodeCompileService codeCompileService;\n\n    @Resource\n    private IMsPublisher msPublisher;\n\n    private final String code = \"gitlab-test\";\n\n    private final String defaultBranch = \"master\";\n\n    @Test\n    public void createMs() {\n\n        TacMsDO tacMsDO = new TacMsDO();\n        tacMsDO.setCode(\"gitlab-test\");\n        tacMsDO.setName(\"gitlab测试\");\n        tacMsDO.setGitSupport(true);\n        tacMsDO.setGitRepo(\"git@127.0.0.1:tac-admin/tac-test01.git\");\n\n        TacMsDO ms = msService.createMs(tacMsDO);\n\n        assertNotNull(ms);\n    }\n\n    @Test\n    public void getMs() {\n\n        TacMsDO ms = msService.getMs(code);\n\n        assertNotNull(ms);\n    }\n\n    @Test\n    public void createMsInst() {\n\n        TacInst gitTacMsInst = msInstService.createGitTacMsInst(code, code, defaultBranch);\n\n        assertNotNull(gitTacMsInst);\n\n        List<TacInst> msInsts = msInstService.getMsInsts(code);\n\n        assertNotNull(msInsts);\n    }\n\n    @Test\n    public void prePublishTest() throws ServiceException, IOException {\n\n        TacMsDO ms = msService.getMs(code);\n\n        List<TacInst> allTacMsInsts = msInstService.getMsInsts(code);\n\n        TacInst tacInst = allTacMsInsts.get(0);\n\n        String sourcePath = gitRepoService.pullInstanceCode(ms.getGitRepo(), ms.getCode(), tacInst.getGitBranch());\n\n        codeCompileService.compile(tacInst.getId(), sourcePath);\n\n        byte[] jarFile = codeCompileService.getJarFile(tacInst.getId());\n\n        msPublisher.prePublish(tacInst, jarFile);\n\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/engine/service/JdkCompilerTest.java",
    "content": "package com.alibaba.tac.engine.service;\n\nimport com.alibaba.tac.engine.code.CodeCompileService;\nimport com.alibaba.tac.engine.test.TacEnginTest;\nimport com.alibaba.tac.sdk.common.TacResult;\nimport com.google.common.collect.Maps;\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport javax.annotation.Resource;\nimport java.io.File;\nimport java.io.IOException;\n\nimport static org.junit.Assert.assertNotNull;\n\n/**\n * @author jinshuan.li 12/02/2018 08:49\n */\n\npublic class JdkCompilerTest extends TacEnginTest {\n\n    @Resource\n    private CodeCompileService codeCompileService;\n\n    @Resource\n    private TacInstRunService tacInstService;\n\n    private String src = \"/Users/jinshuan.li/Source/open-tac/tac-dev-source\";\n\n    private String msCode = \"abcd\";\n\n    @Before\n    public void beforeTest() throws Exception {\n\n    }\n\n    @Test\n    public void testCompiler() throws Exception {\n\n\n        codeCompileService.compile(msCode, src);\n    }\n\n    @Test\n    public void testPackage() throws IOException {\n\n        byte[] jarFile = codeCompileService.getJarFile(msCode);\n\n        assertNotNull(jarFile);\n    }\n\n    @Test\n    public void runCodeTest() throws Exception {\n\n        TacResult<Object> tacResult = tacInstService.runWithLoad(\"msCode\", 1024L, Maps.newHashMap());\n\n        System.out.println(tacResult);\n\n    }\n\n    String getCurrentPath() {\n        File file = new File(\"\");\n        return file.getAbsolutePath();\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/engine/service/TacInstanceLoadServiceTest.java",
    "content": "package com.alibaba.tac.engine.service;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.inst.domain.TacInstanceInfo;\nimport com.alibaba.tac.engine.inst.service.IMsInstService;\nimport com.alibaba.tac.engine.test.TestApplication;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringRunner;\n\nimport javax.annotation.Resource;\n\nimport static org.junit.Assert.*;\n\n/**\n * @author jinshuan.li 12/02/2018 18:24\n */\n@RunWith(SpringRunner.class)\n@SpringBootTest(classes = TestApplication.class)\npublic class TacInstanceLoadServiceTest {\n\n    @Resource\n    private TacInstanceLoadService tacInstanceLoadService;\n\n    @Resource\n    private IMsInstService iMsInstService;\n\n    @Test\n    public void loadTacHandler() throws Exception {\n        TacInst tacMsInst = iMsInstService.getTacMsInst(111L);\n        TacInstanceInfo tacInstanceInfo = tacInstanceLoadService.loadTacHandler(tacMsInst);\n\n        assertNotNull(tacInstanceInfo);\n    }\n}"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/engine/test/TacEnginTest.java",
    "content": "package com.alibaba.tac.engine.test;\n\nimport com.alibaba.tac.engine.code.CodeLoadService;\nimport lombok.extern.slf4j.Slf4j;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringRunner;\n\n/**\n * @author jinshuan.li 26/02/2018 11:36\n */\n@Slf4j\n@RunWith(SpringRunner.class)\n@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.NONE)\npublic class TacEnginTest {\n\n    static {\n        try {\n            ClassLoader classLoader = CodeLoadService.changeClassLoader();\n        } catch (Exception e) {\n            log.error(e.getMessage(), e);\n        }\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/engine/test/TestApplication.java",
    "content": "package com.alibaba.tac.engine.test;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.context.annotation.PropertySource;\nimport org.springframework.context.annotation.PropertySources;\n\n/**\n * @author jinshuan.li 12/02/2018 09:26\n */\n@SpringBootApplication(\n    scanBasePackages = {\"com.alibaba.tac.engine\", \"com.alibaba.tac.infrastracture\", \"com.alibaba.tac.sdk\",\"com.tmall.tac.test\"})\n@PropertySources({@PropertySource(\"classpath:test.properties\")})\npublic class TestApplication {\n\n\n}\n"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/engine/utils/TacFileUtilTest.java",
    "content": "package com.alibaba.tac.engine.utils;\n\nimport com.alibaba.tac.engine.test.TacEnginTest;\nimport com.alibaba.tac.engine.code.TacFileService;\nimport org.junit.Test;\n\nimport javax.annotation.Resource;\n\n/**\n * @author jinshuan.li 27/02/2018 20:29\n */\npublic class TacFileUtilTest extends TacEnginTest {\n\n    @Resource\n    private TacFileService tacFileService;\n\n    @Test\n    public void getClassFileOutputPath() {\n\n        String classFileOutputPath = tacFileService.getClassFileOutputPath(1L);\n\n        System.out.println(classFileOutputPath);\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/test/http/HttpClientTest.java",
    "content": "package com.alibaba.tac.test.http;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.tac.sdk.common.TacResult;\nimport org.asynchttpclient.AsyncHttpClient;\nimport org.asynchttpclient.ListenableFuture;\nimport org.asynchttpclient.Response;\nimport org.asynchttpclient.util.HttpConstants;\nimport org.junit.Test;\n\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\nimport static org.asynchttpclient.Dsl.asyncHttpClient;\n\n/**\n * @author jinshuan.li 07/03/2018 15:41\n */\npublic class HttpClientTest {\n\n    @Test\n    public void test() throws InterruptedException, ExecutionException, TimeoutException {\n\n        JSONObject data = new JSONObject();\n        data.put(\"name\", \"ljinshuan\");\n\n        AsyncHttpClient asyncHttpClient = asyncHttpClient();\n\n        ListenableFuture<Response> execute = asyncHttpClient.preparePost(\"http://localhost:8001/api/tac/execute/shuan\")\n            .addHeader(\"Content-Type\", \"application/json;charset=UTF-8\").setBody(data.toJSONString()).execute();\n        Response response = execute.get(10, TimeUnit.SECONDS);\n\n        if (response.getStatusCode() == HttpConstants.ResponseStatusCodes.OK_200) {\n            TacResult tacResult = JSONObject.parseObject(response.getResponseBody(), TacResult.class);\n\n            System.out.println(tacResult);\n        }\n        System.out.println(response);\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/test/redis/RedisConfig.java",
    "content": "package com.alibaba.tac.test.redis;\n\nimport com.alibaba.tac.engine.common.redis.RedisSequenceCounter;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.data.redis.connection.jedis.JedisConnectionFactory;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.data.redis.listener.ChannelTopic;\nimport org.springframework.data.redis.listener.RedisMessageListenerContainer;\nimport org.springframework.data.redis.listener.adapter.MessageListenerAdapter;\n\nimport static com.alibaba.tac.engine.service.RedisBeansConfig.getCounterRedisTemplate;\n\n/**\n * @author jinshuan.li 28/02/2018 19:52\n */\n@Configuration(\"testRedisConfig\")\npublic class RedisConfig {\n\n    @Bean\n    public RedisMessageListenerContainer redisMessageListenerContainer(JedisConnectionFactory jedisConnectionFactory,\n                                                                       MessageListenerAdapter listenerAdapter) {\n\n        RedisMessageListenerContainer container = new RedisMessageListenerContainer();\n        container.setConnectionFactory(jedisConnectionFactory);\n        container.addMessageListener(listenerAdapter, new ChannelTopic(\"topicA\"));\n        // 设置线程池\n        //container.setTaskExecutor(null);\n        return container;\n    }\n\n    @Bean\n    public MessageListenerAdapter listenerAdapter(TacRedisMessageListener messageListener) {\n\n        MessageListenerAdapter adapter = new MessageListenerAdapter(messageListener, \"receiveMessage\");\n\n        return adapter;\n    }\n\n    @Bean(name = \"counterRedisTemplate\")\n    public RedisTemplate counterRedisTemplate(JedisConnectionFactory jedisConnectionFactory) {\n\n        return  getCounterRedisTemplate(jedisConnectionFactory);\n    }\n\n    @Bean\n    public RedisSequenceCounter redisSequenceCounter() {\n\n        return new RedisSequenceCounter(\"redis.counter\");\n    }\n\n}\n"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/test/redis/StringDataRedisTest.java",
    "content": "package com.alibaba.tac.test.redis;\n\nimport com.alibaba.tac.engine.inst.domain.TacInst;\nimport com.alibaba.tac.engine.util.Bytes;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.data.redis.connection.RedisConnection;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.data.redis.core.ValueOperations;\nimport org.springframework.test.context.junit4.SpringRunner;\n\nimport javax.annotation.Resource;\nimport java.io.Serializable;\nimport java.util.concurrent.CountDownLatch;\n\n/**\n * @author jinshuan.li 28/02/2018 19:44\n */\n@SpringBootApplication(scanBasePackages = {\"com.alibaba.tac.engine.redis\"})\n@RunWith(SpringRunner.class)\n@SpringBootTest(classes = StringDataRedisTest.class, webEnvironment = SpringBootTest.WebEnvironment.NONE)\npublic class StringDataRedisTest {\n\n    @Autowired\n    private RedisTemplate<String, String> template;\n\n    @Resource(name = \"redisTemplate\")\n    private ValueOperations<String, Serializable> valueOperations;\n\n    @Resource(name = \"redisTemplate\")\n    private ValueOperations<String, Long> valueOperations2;\n\n    @Resource(name = \"counterRedisTemplate\")\n    private RedisTemplate<String, String> counterRedisTemplate;\n\n\n    private CountDownLatch countDownLatch = new CountDownLatch(1);\n\n    @Test\n    public void test() {\n\n        TacInst tacInst = new TacInst();\n        tacInst.setJarVersion(\"xxx\");\n        TacInst tacInst1 = saveTest(\"name\", tacInst);\n\n        System.out.println(tacInst1);\n    }\n\n    @Test\n    public void sendMessage() {\n\n        template.convertAndSend(\"topicA\", \"hello world\");\n\n        System.out.println(\"xxx\");\n    }\n\n    @Test\n    public void sendMessage2() throws InterruptedException {\n\n        while (true) {\n            template.convertAndSend(\"topicA\", \"hello world\" + System.currentTimeMillis());\n            Thread.sleep(1000L);\n        }\n\n    }\n\n    @Test\n    public void testSub1() throws InterruptedException {\n\n        System.out.println(\"testSub1\");\n        countDownLatch.await();\n    }\n\n    @Test\n    public void testSub2() throws InterruptedException {\n\n        System.out.println(\"testSub2\");\n        countDownLatch.await();\n    }\n\n    public <T extends Serializable> T saveTest(String key, T value) {\n\n        valueOperations.set(key, value);\n\n        T data = (T)valueOperations.get(key);\n\n        return data;\n\n    }\n\n    @Test\n    public void testIncre() {\n\n        RedisConnection connection = template.getConnectionFactory().getConnection();\n        byte[] key = Bytes.toBytes(\"ljinshuan123\");\n        Long incr = connection.incr(key);\n\n        byte[] bytes = connection.get(key);\n\n        connection.set(key, bytes);\n\n        connection.incr(key);\n        bytes = connection.get(key);\n\n    }\n\n    @Test\n    public void testIncre2() {\n\n        byte[] bytes = Bytes.toBytes(\"2\");\n\n        long a = 52;\n\n        byte b = (byte)a;\n\n    }\n\n    @Test\n    public void testIncre3() {\n\n        ValueOperations<String, String> valueOperations = counterRedisTemplate.opsForValue();\n        String key = \"ahaha\";\n        String s = valueOperations.get(key);\n        valueOperations.set(key, \"1\");\n        Long increment = valueOperations.increment(key, 2L);\n        valueOperations.get(key);\n\n        System.out.println(s);\n    }\n\n}\n\n\n"
  },
  {
    "path": "tac-engine/src/test/java/com/alibaba/tac/test/redis/TacRedisMessageListener.java",
    "content": "package com.alibaba.tac.test.redis;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.stereotype.Service;\n\n/**\n * @author jinshuan.li 28/02/2018 20:24\n */\n@Slf4j\n@Service\npublic class TacRedisMessageListener {\n\n    /**\n     * 接收消息\n     *\n     * @param message\n     * @param channel\n     */\n    public void receiveMessage(String message, String channel) {\n\n        log.info(message);\n    }\n}\n"
  },
  {
    "path": "tac-engine/src/test/resources/test.properties",
    "content": "\n\n\n\n\ntac.default.store=redis"
  },
  {
    "path": "tac-engine/src/test/source/test1/com/alibaba/tac/biz/processor/HelloTac.java",
    "content": "package com.alibaba.tac.biz.processor;\n\nimport com.alibaba.tac.sdk.common.TacResult;\nimport com.alibaba.tac.sdk.domain.Context;\nimport com.alibaba.tac.sdk.handler.TacHandler;\n\n/**\n * @author jinshuan.li 12/02/2018 08:47\n */\npublic class HelloTac implements TacHandler<Integer> {\n    @Override\n    public TacResult<Integer> execute(Context context) throws Exception {\n\n        System.out.println(context);\n        System.out.println(\"hello tac\");\n        return TacResult.newResult(1);\n    }\n}\n"
  },
  {
    "path": "tac-infrastructure/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>tac</artifactId>\n        <groupId>com.alibaba</groupId>\n        <version>0.0.4</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>tac-infrastructure</artifactId>\n    <packaging>jar</packaging>\n\n    <name>tac-infrastructure</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-web</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-test</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-cache</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-data-redis</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-logging</artifactId>\n        </dependency>\n\n\n        <dependency>\n            <groupId>ch.qos.logback</groupId>\n            <artifactId>logback-classic</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.aspectj</groupId>\n            <artifactId>aspectjweaver</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.apache.zookeeper</groupId>\n            <artifactId>zookeeper</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>tac-sdk</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.asynchttpclient</groupId>\n            <artifactId>async-http-client</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.gitlab4j</groupId>\n            <artifactId>gitlab4j-api</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.eclipse.jgit</groupId>\n            <artifactId>org.eclipse.jgit</artifactId>\n        </dependency>\n\n        <!--      <dependency>\n                  <groupId>com.alibaba</groupId>\n                  <artifactId>tac-custom-datasource-demo</artifactId>\n                  <version>0.0.4-SNAPSHOT</version>\n              </dependency>-->\n    </dependencies>\n\n    <build>\n\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <source>${jdk.version}</source>\n                    <target>${jdk.version}</target>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-resources-plugin</artifactId>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n        </plugins>\n\n    </build>\n</project>\n"
  },
  {
    "path": "tac-infrastructure/src/main/java/com/alibaba/tac/infrastracture/logger/TacLogConsts.java",
    "content": "package com.alibaba.tac.infrastracture.logger;\n\n/**\n * Created by huchangkun on 2018/1/29.\n */\npublic final class TacLogConsts {\n\n    /**\n     *  the user log tag\n     */\n    public  static String TAC_USER_LOG = \"TAC-USER-LOG\";\n    /**\n     * TT_LOG\n     */\n    public  static String TAC_BIZ_TT_LOG = \"TAC-BIZ-TT-LOG\";\n    /**\n     * executor log\n     */\n    public  static String TAC_EXECUTOR_LOG = \"TAC-EXECUTOR-LOG\";\n\n\n}\n"
  },
  {
    "path": "tac-infrastructure/src/main/java/com/alibaba/tac/infrastracture/logger/TacLoggerImpl.java",
    "content": "package com.alibaba.tac.infrastracture.logger;\n\nimport com.alibaba.tac.sdk.common.TacContants;\nimport com.alibaba.tac.sdk.common.TacThreadLocals;\nimport com.alibaba.tac.sdk.infrastracture.TacLogger;\nimport org.apache.commons.lang3.StringUtils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.stereotype.Service;\n\nimport java.io.PrintWriter;\nimport java.io.StringWriter;\nimport java.net.Inet4Address;\nimport java.net.UnknownHostException;\nimport java.util.Map;\nimport java.util.Random;\nimport java.util.concurrent.locks.ReentrantLock;\n\n/**\n * the logger service\n */\n@Service\npublic class TacLoggerImpl implements TacLogger {\n\n    protected static final Logger SYS_LOGGER = LoggerFactory.getLogger(TacLoggerImpl.class);\n\n    protected static final Logger LOGGER = LoggerFactory.getLogger(TacLogConsts.TAC_USER_LOG);\n\n    protected static final Logger TT_LOGGER = LoggerFactory.getLogger(TacLogConsts.TAC_BIZ_TT_LOG);\n\n    private final String lineSeparator = System.getProperty(\"line.separator\");\n\n    private final String replacement = \"##\";\n\n    private static String hostIp;\n\n    private static String hostHost;\n\n    /**\n     * the console log lock\n     */\n    private ReentrantLock consoleLogLock = new ReentrantLock();\n\n    /**\n     *  default log rate\n     */\n    private volatile float logOutputRate = 1;\n\n    @Override\n    public void debug(String log) {\n        appendToStringBuilder(log);\n        log = StringUtils.replace(log, lineSeparator, replacement);\n        if (LOGGER.isDebugEnabled()) {\n            LOGGER.debug(\"^\" + hostIp + \"^\" + log);\n        }\n    }\n\n    @Override\n    public void info(String log) {\n        appendToStringBuilder(log);\n        log = StringUtils.replace(log, lineSeparator, replacement);\n        if (LOGGER.isInfoEnabled()) {\n            LOGGER.info(\"^\" + hostIp + \"^\" + log);\n        }\n    }\n\n    @Override\n    public void rateInfo(String log) {\n        if (new Random().nextInt(100) < (logOutputRate * 100)) {\n            appendToStringBuilder(log);\n            log = StringUtils.replace(log, lineSeparator, replacement);\n            if (LOGGER.isInfoEnabled()) {\n                LOGGER.info(\"^\" + hostIp + \"^\" + log);\n            }\n        }\n    }\n\n    @Override\n    public void warn(String log) {\n        appendToStringBuilder(log);\n        log = StringUtils.replace(log, lineSeparator, replacement);\n        if (LOGGER.isWarnEnabled()) {\n            LOGGER.warn(\"^\" + hostIp + \"^\" + log);\n        }\n    }\n\n    @Override\n    public void rateWarn(String log) {\n        if (new Random().nextInt(100) < (logOutputRate * 100)) {\n            appendToStringBuilder(log);\n            log = StringUtils.replace(log, lineSeparator, replacement);\n            if (LOGGER.isWarnEnabled()) {\n                LOGGER.warn(\"^\" + hostIp + \"^\" + log);\n            }\n        }\n    }\n\n    @Override\n    public void error(String log, Throwable t) {\n        log = StringUtils.replace(log, lineSeparator, replacement);\n        StringWriter sw = new StringWriter();\n        if (t != null) {\n            t.printStackTrace(new PrintWriter(sw));\n        }\n        appendToStringBuilder(log, t, sw);\n        String errorMsg = new StringBuilder(log).append(replacement)\n            .append(StringUtils.replace(sw.toString(), lineSeparator, replacement)).toString();\n        if (LOGGER.isErrorEnabled()) {\n            LOGGER.error(\"^\" + hostIp + \"^\" + errorMsg);\n        }\n\n    }\n\n    @Override\n    public void ttLog(String log) {\n        if (TT_LOGGER.isInfoEnabled()) {\n            TT_LOGGER.info(\"^\" + hostIp + \"^\" + log);\n        }\n    }\n\n    @Override\n    public String getContent() {\n        StringBuilder content = TacThreadLocals.TAC_LOG_CONTENT.get();\n        if (content != null) {\n            return content.toString();\n        }\n        return StringUtils.EMPTY;\n    }\n\n    @Override\n    public boolean isDebugEnabled() {\n        return LOGGER.isDebugEnabled();\n    }\n\n    @Override\n    public boolean isInfoEnabled() {\n        return LOGGER.isInfoEnabled();\n    }\n\n    @Override\n    public boolean isWarnEnabled() {\n        return LOGGER.isWarnEnabled();\n    }\n\n    @Override\n    public boolean isErrorEnabled() {\n        return LOGGER.isErrorEnabled();\n    }\n\n    private void appendToStringBuilder(String log) {\n\n        if (!isDebugInvoke()) {\n            return;\n        }\n        try {\n            consoleLogLock.lock();\n            StringBuilder content = TacThreadLocals.TAC_LOG_CONTENT.get();\n            if (content == null) {\n                content = new StringBuilder();\n                TacThreadLocals.TAC_LOG_CONTENT.set(content);\n            }\n\n            content.append(log).append(\"\\n\");\n        } finally {\n            consoleLogLock.unlock();\n        }\n\n    }\n\n    private Boolean isDebugInvoke() {\n        Map<String, Object> params = TacThreadLocals.TAC_PARAMS.get();\n        if (params == null) {\n            return false;\n        }\n        String flag = String.valueOf(params.get(TacContants.DEBUG));\n        if (StringUtils.equalsIgnoreCase(\"true\", flag)) {\n            return true;\n        }\n        return false;\n    }\n\n    private void appendToStringBuilder(String log, Throwable t, StringWriter sw) {\n\n        if (!isDebugInvoke()) {\n            return;\n        }\n        try {\n\n            consoleLogLock.lock();\n            StringBuilder content = TacThreadLocals.TAC_LOG_CONTENT.get();\n            if (content == null) {\n                content = new StringBuilder();\n                TacThreadLocals.TAC_LOG_CONTENT.set(content);\n            }\n\n            content.append(log).append(\"\\n\");\n            content.append(sw.toString()).append(\"\\n\");\n        } finally {\n            consoleLogLock.unlock();\n        }\n\n    }\n\n    static {\n        try {\n            if (hostIp == null) {\n                hostIp = Inet4Address.getLocalHost().getHostAddress();\n            }\n\n            if (hostHost == null) {\n                hostHost = Inet4Address.getLocalHost().getHostName();\n            }\n        } catch (UnknownHostException var1) {\n            var1.printStackTrace();\n        }\n\n    }\n}"
  },
  {
    "path": "tac-infrastructure/src/test/java/com/alibaba/tac/AppTest.java",
    "content": "package com.alibaba.tac;\n\nimport junit.framework.Test;\nimport junit.framework.TestCase;\nimport junit.framework.TestSuite;\n\n/**\n * Unit test for simple App.\n */\npublic class AppTest \n    extends TestCase\n{\n    /**\n     * Create the test case\n     *\n     * @param testName name of the test case\n     */\n    public AppTest( String testName )\n    {\n        super( testName );\n    }\n\n    /**\n     * @return the suite of tests being tested\n     */\n    public static Test suite()\n    {\n        return new TestSuite( AppTest.class );\n    }\n\n    /**\n     * Rigourous Test :-)\n     */\n    public void testApp()\n    {\n        assertTrue( true );\n    }\n}\n"
  },
  {
    "path": "tac-sdk/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <parent>\n        <artifactId>tac</artifactId>\n        <groupId>com.alibaba</groupId>\n        <version>0.0.4</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>tac-sdk</artifactId>\n    <packaging>jar</packaging>\n\n    <name>tac-sdk</name>\n    <url>http://maven.apache.org</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>com.google.guava</groupId>\n            <artifactId>guava</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-collections4</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>commons-beanutils</groupId>\n            <artifactId>commons-beanutils</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-lang3</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-test</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-configuration-processor</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.projectlombok</groupId>\n            <artifactId>lombok</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>fastjson</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-web</artifactId>\n        </dependency>\n    </dependencies>\n\n\n\n    <build>\n\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <source>${jdk.version}</source>\n                    <target>${jdk.version}</target>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-resources-plugin</artifactId>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n        </plugins>\n\n    </build>\n\n\n</project>\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/common/TacContants.java",
    "content": "\n\npackage com.alibaba.tac.sdk.common;\n\n/**\n * Created by changkun.hck on 2016/12/20.\n */\npublic final class TacContants {\n    public static final  String USER_ID = \"userId\";\n    public static final  String USER_NICK = \"userNick\";\n    public static final  String PLATFORM = \"platform\";\n    public static final  String VERSION = \"version\";\n    public static final  String CHANNEL = \"channel\";\n    public static final  String USER_AGENT = \"userAgent\";\n    public static final  String IP = \"ip\";\n    public static final  String TTID = \"ttid\";\n    public static final  String UTDID = \"utdid\";\n    public static final  String APP_NAME = \"appName\";\n    public static final  String MS_CODE = \"msCode\";\n    public static final  String DEBUG = \"debug\";   \n    public static final  String IMEI = \"imei\";\n    public static final  String IMSI = \"imsi\";\n    public static final  String DEVICE_ID = \"deviceId\";\n    public static final  String DEVICE_MODE = \"deviceMode\";\n    public static final  String DEVICE_OS_VERSION = \"deviceOsVersion\";\n    public static final  String NETWORK_SCHEMA = \"networkSchema\";\n    public static final  String FROM_CONSOLE=\"fromConsole\";\n\n    public static final  String HOTPOINT_KEY = \"hotPointKey\";\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/common/TacParams.java",
    "content": "package com.alibaba.tac.sdk.common;\n\nimport lombok.Data;\nimport org.apache.commons.lang3.StringUtils;\n\nimport java.io.Serializable;\nimport java.util.HashMap;\nimport java.util.Map;\n\n@Data\npublic class TacParams implements Serializable {\n\n    private static final long serialVersionUID = 6681979519642226666L;\n    private String appName;\n\n    /**\n     * the service codes ,  required,  split with ','\n     *\n     */\n    private String msCodes;\n\n    /**\n     * is batch execute\n     *\n     */\n    private boolean isBatch = false;\n\n    /**\n     * the service params,  {@link TacContants}\n     *\n     */\n    private Map<String, Object> paramMap = new HashMap<String, Object>();\n\n    public TacParams(String appName, String msCodes) {\n        this.appName = appName;\n        this.msCodes = msCodes;\n    }\n\n    public String getParamValue(String paramKey) {\n        if (StringUtils.isEmpty(paramKey)) {\n            return StringUtils.EMPTY;\n        }\n        if (paramMap.get(paramKey) != null) {\n            return String.valueOf(paramMap.get(paramKey));\n        } else {\n            return StringUtils.EMPTY;\n        }\n    }\n\n    public void addPara(String key, Object value) {\n        this.paramMap.put(key, value);\n    }\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/common/TacResult.java",
    "content": "package com.alibaba.tac.sdk.common;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.net.Inet4Address;\nimport java.net.UnknownHostException;\n\n/**\n * @author jinshuan.li 12/02/2018 08:10\n */\n@Data\npublic class TacResult<T> implements Serializable {\n\n    private static final long serialVersionUID = 2743787028659568164L;\n    private boolean success = true;\n    /**\n     * the msgCode\n     */\n    private String msgCode;\n\n    /**\n     * the msgInfo\n     */\n    private String msgInfo;\n\n    /**\n     * the execute data\n     */\n    public T data;\n\n    /**\n     * hasMore data\n     */\n    public Boolean hasMore;\n\n    private static String staticIp;\n\n    /**\n     * the tac engine host ip\n     */\n    private String ip;\n\n    /**\n     *\n     *\n     * @param data\n     */\n    public TacResult(T data) {\n        this.data = data;\n        this.ip = staticIp;\n    }\n\n    /**\n     *\n     *\n     * @param msgCode\n     * @param msgInfo\n     * @param data\n     */\n    public TacResult(String msgCode, String msgInfo, T data) {\n        this.msgCode = msgCode;\n        this.msgInfo = msgInfo;\n        this.data = data;\n        this.ip = staticIp;\n    }\n\n    public static final <T> TacResult<T> newResult(T data) {\n        TacResult<T> instance = new TacResult<T>(data);\n        return instance;\n    }\n\n    public static final <T> TacResult<T> newResult(T data, boolean hasMore) {\n        TacResult<T> instance = new TacResult<T>(data);\n        instance.setHasMore(hasMore);\n        return instance;\n    }\n\n    /**\n     *\n     *\n     * @param msgCode\n     * @param msgInfo\n     * @return\n     */\n    public static final <T> TacResult<T> errorResult(String msgCode, String msgInfo) {\n        TacResult<T> instance = new TacResult<T>(null);\n        instance.success = false;\n        instance.msgCode = msgCode;\n        instance.msgInfo = msgInfo;\n        return instance;\n    }\n\n    /**\n     *\n     *\n     * @param msgCode\n     * @return\n     */\n    public static final <T> TacResult<T> errorResult(String msgCode) {\n        TacResult<T> instance = new TacResult<T>(null);\n        instance.success = false;\n        instance.msgCode = msgCode;\n        instance.msgInfo = msgCode;\n        return instance;\n    }\n\n    static {\n        try {\n            if (staticIp == null) {\n                staticIp = Inet4Address.getLocalHost().getHostAddress();\n            }\n        } catch (UnknownHostException var1) {\n            var1.printStackTrace();\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/common/TacThreadLocals.java",
    "content": "package com.alibaba.tac.sdk.common;\n\nimport java.util.Map;\n\npublic class TacThreadLocals {\n\n    /**\n     * the log data\n     */\n    public static final ThreadLocal<StringBuilder> TAC_LOG_CONTENT = new ThreadLocal<StringBuilder>();\n\n    /**\n     * the params data\n     */\n    public static final ThreadLocal<Map<String, Object>> TAC_PARAMS = new ThreadLocal<Map<String, Object>>();\n\n    /**\n     * clear data in threadlocal\n     */\n    public static void clear() {\n        TAC_LOG_CONTENT.remove();\n        TAC_PARAMS.remove();\n    }\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/domain/Context.java",
    "content": "package com.alibaba.tac.sdk.domain;\n\nimport java.io.Serializable;\nimport java.util.Map;\n\n/**\n * @author jinshuan.li 12/02/2018\n */\npublic interface Context extends Serializable {\n\n    /**\n     * get the msCode\n     *\n     * @return\n     */\n    String getMsCode();\n\n    /**\n     * get the instanceId\n     *\n     * @return\n     */\n    long getInstId();\n\n    /**\n     * get appName\n     * @return\n     */\n    String getAppName();\n\n    /**\n     *  get the value in the params map\n     */\n    Object get(String key);\n\n    /**\n     *\n     * @param key\n     * @return\n     */\n    boolean containsKey(String key);\n\n    /**\n     *\n     * @return\n     */\n    Map<String, Object> getParams();\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/domain/TacRequestContext.java",
    "content": "package com.alibaba.tac.sdk.domain;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class TacRequestContext implements Context {\n\n\n    private String appName;\n\n    private String msCode;\n\n    private long instId;\n\n    @Override\n    public String getAppName() {\n        return appName;\n    }\n\n    public void setAppName(String appName) {\n        this.appName = appName;\n    }\n\n    public void setMsCode(String msCode) {\n        this.msCode = msCode;\n    }\n\n    public void setInstId(long instId) {\n        this.instId = instId;\n    }\n\n    public void setParamMap(Map<String, Object> paramMap) {\n        this.paramMap = paramMap;\n    }\n\n    private Map<String, Object> paramMap = new HashMap<String, Object>();\n\n    @Override\n    public String getMsCode() {\n        return msCode;\n    }\n\n    @Override\n    public long getInstId() {\n        return instId;\n    }\n\n    @Override\n    public Object get(String key) {\n        return paramMap.get(key);\n    }\n\n    @Override\n    public boolean containsKey(String key) {\n        return paramMap.containsKey(key);\n    }\n\n    @Override\n    public Map<String, Object> getParams() {\n        return paramMap;\n    }\n\n    public Map<String, Object> getParamMap() {\n        return paramMap;\n    }\n\n    public void putAll(Map<String, Object> paramMap) {\n        if (paramMap != null || !paramMap.isEmpty()) {\n            this.paramMap.putAll(paramMap);\n        }\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/error/ErrorCode.java",
    "content": "package com.alibaba.tac.sdk.error;\n\npublic class ErrorCode {\n    /**\n     * ALREADY_EXIST\n     */\n    public static final int ALREADY_EXIST = -102;\n    /**\n     * NOT_EXIST\n     */\n    public static final int NOT_EXIST = -103;\n    /**\n     * NO_PERMISSION\n     */\n    public static final int NO_PERMISSION = -104;\n    /**\n     * NOT_SUPPORTED\n     */\n    public static final int NOT_SUPPORTED = -105;\n    /**\n     *\n     */\n    public static final int INCREMENTAL_CATALOGS_CLIENT_DATA_VERSION_ERR = -106;\n\n    /**\n     *\n     */\n    public static final int ILLEGAL_ARGUMENT = -110;\n\n    /**\n     * IO Exception\n     */\n    public static final int IO_EXCEPTION = -111;\n\n    /**\n     * 系统异常\n     */\n    public static final int SYS_EXCEPTION = -500;\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/error/IError.java",
    "content": "package com.alibaba.tac.sdk.error;\n\n/**\n * @author jinshuan.li 2017/12/28 下午3:03\n */\npublic interface IError {\n\n    /**\n     * get error code\n     * @return\n     */\n    int getCode();\n\n    /**\n     * get error message\n     * @return\n     */\n    String getMessage();\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/error/ServiceException.java",
    "content": "package com.alibaba.tac.sdk.error;\n\n/**\n * the service exception class\n */\npublic class ServiceException extends Exception {\n\n    private static final long serialVersionUID = 1701785539191674857L;\n    /**\n     * errorCode\n     */\n    private int errorCode;\n    /**\n     * errorMessage\n     */\n    private String message;\n\n    public ServiceException(int errorCode, String message) {\n        super(message);\n        this.errorCode = errorCode;\n        this.message = message;\n    }\n\n    public int getErrorCode() {\n        return errorCode;\n    }\n\n    public void setErrorCode(int errorCode) {\n        this.errorCode = errorCode;\n    }\n\n    @Override\n    public String getMessage() {\n        return message;\n    }\n\n    public void setMessage(String message) {\n        this.message = message;\n    }\n\n    /**\n     * the helper method which throw an exception\n     *\n     * @param error\n     * @return\n     * @throws ServiceException\n     */\n    public static ServiceException throwException(IError error) throws ServiceException {\n\n        throw new ServiceException(error.getCode(), error.getMessage());\n    }\n\n    /**\n     *\n     *\n     * @param errorCode\n     * @param errorMessage\n     * @return\n     * @throws ServiceException\n     */\n    public static ServiceException throwException(Integer errorCode, String errorMessage) throws ServiceException {\n\n        throw new ServiceException(errorCode, errorMessage);\n    }\n\n    /**\n     *\n     *\n     * @param error\n     * @param errorMessage\n     * @return\n     * @throws ServiceException\n     */\n    public static ServiceException throwException(IError error, String errorMessage) throws ServiceException {\n\n        throw new ServiceException(error.getCode(), errorMessage);\n    }\n\n    /**\n     *\n     *\n     * @param errorCode\n     * @param errorMessage\n     * @return\n     */\n    public static ServiceException newException(Integer errorCode, String errorMessage) {\n\n        return new ServiceException(errorCode, errorMessage);\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/factory/AbstractServiceFactory.java",
    "content": "package com.alibaba.tac.sdk.factory;\n\nimport org.springframework.beans.BeansException;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.ApplicationContextAware;\n\n/**\n *\n * the factory class which provide tac engine data source\n */\npublic abstract class AbstractServiceFactory implements ApplicationContextAware {\n\n    /**\n     * the Spring contenxt\n     */\n    public static ApplicationContext applicationContext;\n\n\n\n    @Override\n    public void setApplicationContext(ApplicationContext ac) throws BeansException {\n        if (applicationContext != null) {\n            return;\n        }\n        // set the spring context\n        applicationContext = ac;\n    }\n\n    /**\n     * get spring bean with beanId;\n     *\n     * @param beanId spring bean id\n     * @param <T>\n     * @return\n     */\n    protected static <T> T getServiceBean(String beanId) {\n        if (applicationContext.getBean(beanId) == null) {\n            throw new IllegalStateException(\"bean[\" + beanId + \"] Incorrectly configured!\");\n        }\n        return (T)applicationContext.getBean(beanId);\n    }\n\n    public static <T> T getServiceBean(Class<T> clazz) {\n\n        T bean = applicationContext.getBean(clazz);\n\n        checkNull(bean, clazz);\n\n        return bean;\n    }\n\n    private static void checkNull(Object bean, Class<?> clazz) {\n\n        if (bean == null) {\n            String format = String.format(\"bean [ %s ] Incorrectly configured!\", clazz.getName());\n            throw new IllegalStateException(format);\n        }\n    }\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/factory/TacInfrasFactory.java",
    "content": "package com.alibaba.tac.sdk.factory;\n\nimport com.alibaba.tac.sdk.infrastracture.TacLogger;\nimport org.springframework.stereotype.Service;\n\n/**\n * @author jinshuan.li 12/02/2018 19:04\n */\n@Service\npublic class TacInfrasFactory extends AbstractServiceFactory {\n\n    /**\n     * The logger Service\n     *\n     * @return\n     */\n    public static TacLogger getLogger() {\n\n        return getServiceBean(TacLogger.class);\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/handler/DisposableHandler.java",
    "content": "package com.alibaba.tac.sdk.handler;\n\n/**\n * TacHandler  destroy\n * Created by huchangkun on 2017/5/23.\n */\npublic interface DisposableHandler {\n\n    void destroy() throws Exception;\n\n}"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/handler/InitializingHandler.java",
    "content": "package com.alibaba.tac.sdk.handler;\n\n/**\n * TacHandler  init\n * Created by huchangkun on 2017/5/23.\n */\npublic interface InitializingHandler {\n\n    void afterPropertiesSet() throws Exception;\n}"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/handler/TacHandler.java",
    "content": "package com.alibaba.tac.sdk.handler;\n\nimport com.alibaba.tac.sdk.common.TacResult;\nimport com.alibaba.tac.sdk.domain.Context;\n\n/**\n * the core interface in tac ,all the biz code should implements it\n *\n * @param <T>\n */\npublic interface TacHandler<T> {\n\n    /**\n     * execute the biz code\n     * @param context\n     * @return\n     * @throws Exception\n     */\n    TacResult<T> execute(Context context) throws Exception;\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/infrastracture/TacLogger.java",
    "content": "package com.alibaba.tac.sdk.infrastracture;\n\n\n/**\n * tac log\n *\n */\npublic interface TacLogger {\n\n    public void debug(String log);\n\n    public void info(String log);\n    \n    public void rateInfo(String log);\n\n    public void warn(String log);\n    \n    public void rateWarn(String log);\n\n    public void error(String log, Throwable t);\n    \n    public void ttLog(String log);\n\n    public String getContent();\n\n\n    boolean isDebugEnabled();\n\n\n    boolean isInfoEnabled();\n\n    boolean isWarnEnabled();\n\n    boolean isErrorEnabled();\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/Cell.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac;\n\nimport com.alibaba.tac.sdk.tangram4tac.render.DefaultRender;\nimport com.alibaba.tac.sdk.tangram4tac.render.IRender;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic abstract class Cell<T extends Style> {\n\n    protected String id;\n\n    protected final String type;\n\n    protected T style;\n\n    protected String reuseId;\n\n    @FieldExcluder\n    protected IRender mRender;\n\n    public Cell() {\n        this.type = getType();\n        this.mRender = new DefaultRender();\n    }\n\n    public void setId(String id) {\n        this.id = id;\n    }\n\n    public void setReuseId(String reuseId) {\n        this.reuseId = reuseId;\n    }\n\n    public String getId() {\n        return id;\n    }\n\n    public void setStyle(T style) {\n        this.style = style;\n    }\n\n    public T getStyle() {\n        return style;\n    }\n\n    public String getReuseId() {\n        return reuseId;\n    }\n\n    public void setRender(IRender mRender) {\n        this.mRender = mRender;\n    }\n\n    public abstract String getType();\n\n    public Object render() {\n        if (mRender != null) {\n            return mRender.renderTo(this);\n        }\n        return null;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/Container.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic abstract class Container<T extends Style> extends Cell<T> {\n\n    protected Cell header;\n\n    protected Cell footer;\n\n    protected List<Cell> items;\n\n    protected String load;\n    /**\n     * businessType 是提供给H5的兼容参数,对Native无意义\n     */\n    protected String businessType;\n\n    protected int loadType;\n\n    public Container() {\n        super();\n        items = new ArrayList<Cell>();\n    }\n\n    public String getBusinessType() {\n        return businessType;\n    }\n\n    public void setBusinessType(String businessType) {\n        this.businessType = businessType;\n    }\n\n    public Cell getHeader() {\n        return header;\n    }\n\n    public void setHeader(Cell header) {\n        this.header = header;\n    }\n\n    public Cell getFooter() {\n        return footer;\n    }\n\n    public void setFooter(Cell footer) {\n        this.footer = footer;\n    }\n\n    public void setLoad(String load) {\n        this.load = load;\n    }\n\n    public void setLoadType(int loadType) {\n        this.loadType = loadType;\n    }\n\n    public String getLoad() {\n        return load;\n    }\n\n    public int getLoadType() {\n        return loadType;\n    }\n\n    public void addChild(Cell child) {\n        addChild(child, -1);\n    }\n\n    public void addChild(Cell child, int index) {\n        if (child != null) {\n            if (index < 0) {\n                items.add(child);\n            } else if (index == 0) {\n                items.add(0, child);\n            } else if (index > 0 && index < items.size()) {\n                items.add(index, child);\n            }\n        }\n    }\n\n    public void addChildren(List<Cell> children) {\n        addChildren(children, -1);\n    }\n\n    public void addChildren(List<Cell> children, int index) {\n        if (children != null && !children.isEmpty()) {\n            if (index < 0) {\n                items.addAll(children);\n            } else if (index == 0) {\n                items.addAll(0, children);\n            } else if (index > 0 && index < items.size()) {\n                items.addAll(index, children);\n            }\n        }\n    }\n\n    public Cell getChildAt(int index) {\n        if (index >= 0 && index < items.size()) {\n            return items.get(index);\n        } else {\n            return null;\n        }\n    }\n\n    public int getChildIndex(Cell child) {\n        if (child != null) {\n            return items.indexOf(child);\n        } else {\n            return -1;\n        }\n    }\n\n    public void removeChild(Cell child) {\n        if (child != null) {\n            items.remove(child);\n        }\n    }\n\n    public void removeAllChildren() {\n        items.clear();\n    }\n\n    public void removeChildAt(int index) {\n        if (index >= 0 && index < items.size()) {\n            items.remove(index);\n        }\n    }\n\n    public List<Cell> getItems() {\n        return items;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/FieldExcluder.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Created by longerian on 2017/11/18.\n *\n * 序列化的时候将排除该注解标记的字段\n *\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.FIELD)\npublic @interface FieldExcluder {\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/FieldNameMapper.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Created by longerian on 2017/11/18.\n *\n * 字段序列化后，默认输出到json里的字段名与成员变量名相同，通过该注解可提供一个别名\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.FIELD)\npublic @interface FieldNameMapper {\n\n    String key();\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/Style.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class Style {\n\n    @FieldNameMapper(key = \"background-color\")\n    protected String backgroundColor;\n\n    @FieldNameMapper(key = \"background-image\")\n    protected String backgroundImage;\n\n    protected float width;\n\n    protected float height;\n\n    protected int zIndex;\n\n    protected String display;\n\n    private float[] margin;\n\n    private float[] padding;\n\n    protected float[] cols;\n\n    protected float aspectRatio;\n\n    protected float ratio;\n\n    protected boolean slidable;\n\n    protected String forLabel;\n\n    protected boolean disableReuse;\n\n    public Style() {\n    }\n\n    public void setMargin(float top, float right, float bottom, float left) {\n        if (this.margin == null) {\n            this.margin = new float[4];\n        }\n        this.margin[0] = top;\n        this.margin[1] = right;\n        this.margin[2] = bottom;\n        this.margin[3] = left;\n    }\n\n    public void setPadding(float top, float right, float bottom, float left) {\n        if (this.padding == null) {\n            this.padding = new float[4];\n        }\n        this.padding[0] = top;\n        this.padding[1] = right;\n        this.padding[2] = bottom;\n        this.padding[3] = left;\n    }\n\n    public void setBackgroundColor(String backgroundColor) {\n        this.backgroundColor = backgroundColor;\n    }\n\n    public void setBackgroundImage(String backgroundImage) {\n        this.backgroundImage = backgroundImage;\n    }\n\n    public void setWidth(int width) {\n        this.width = width;\n    }\n\n    public void setHeight(int height) {\n        this.height = height;\n    }\n\n    public void setzIndex(int zIndex) {\n        this.zIndex = zIndex;\n    }\n\n    public void setDisplay(String display) {\n        this.display = display;\n    }\n\n    public void setCols(float[] cols) {\n        this.cols = cols;\n    }\n\n    public void setAspectRatio(float aspectRatio) {\n        this.aspectRatio = aspectRatio;\n    }\n\n    public String getBackgroundColor() {\n        return backgroundColor;\n    }\n\n    public String getBackgroundImage() {\n        return backgroundImage;\n    }\n\n    public float getWidth() {\n        return width;\n    }\n\n    public float getHeight() {\n        return height;\n    }\n\n    public int getzIndex() {\n        return zIndex;\n    }\n\n    public String getDisplay() {\n        return display;\n    }\n\n    public float[] getMargin() {\n        return margin;\n    }\n\n    public float[] getPadding() {\n        return padding;\n    }\n\n    public float[] getCols() {\n        return cols;\n    }\n\n    public float getAspectRatio() {\n        return aspectRatio;\n    }\n\n    public float getRatio() {\n        return ratio;\n    }\n\n    public void setRatio(float ratio) {\n        this.ratio = ratio;\n    }\n\n    public boolean isSlidable() {\n        return slidable;\n    }\n\n    public void setSlidable(boolean slidable) {\n        this.slidable = slidable;\n    }\n\n    public String getForLabel() {\n        return forLabel;\n    }\n\n    public void setForLabel(String forLabel) {\n        this.forLabel = forLabel;\n    }\n\n    public boolean isDisableReuse() {\n        return disableReuse;\n    }\n\n    public void setDisableReuse(boolean disableReuse) {\n        this.disableReuse = disableReuse;\n    }\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/BannerContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Container;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class BannerContainer extends Container<BannerStyle> {\n\n    public BannerContainer() {\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_BANNER;\n    }\n\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/BannerStyle.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Style;\n\nimport java.util.Map;\n\n/**\n * Created by longerian on 2017/11/15.\n */\npublic class BannerStyle extends Style {\n\n    protected boolean autoScroll;\n\n    protected Map<String, Object> specialInterval;\n\n    protected boolean infinite;\n\n    protected String indicatorImg1;\n\n    protected String indicatorImg2;\n\n    protected String indicatorGravity;\n\n    protected String indicatorPosition;\n\n    protected float indicatorGap;\n\n    protected float indicatorHeight;\n\n    protected float indicatorMargin;\n\n    protected int infiniteMinCount;\n\n    protected float pageRatio;\n\n    protected float hGap;\n\n    protected float scrollMarginLeft;\n\n    protected float scrollMarginRight;\n\n    protected float itemRatio;\n\n    protected float indicatorRadius;\n\n    protected String indicatorColor;\n\n    protected String defaultIndicatorColor;\n\n    public boolean isAutoScroll() {\n        return autoScroll;\n    }\n\n    public void setAutoScroll(boolean autoScroll) {\n        this.autoScroll = autoScroll;\n    }\n\n    public Map<String, Object> getSpecialInterval() {\n        return specialInterval;\n    }\n\n    public void setSpecialInterval(Map<String, Object> specialInterval) {\n        this.specialInterval = specialInterval;\n    }\n\n    public boolean isInfinite() {\n        return infinite;\n    }\n\n    public void setInfinite(boolean infinite) {\n        this.infinite = infinite;\n    }\n\n    public String getIndicatorImg1() {\n        return indicatorImg1;\n    }\n\n    public void setIndicatorImg1(String indicatorImg1) {\n        this.indicatorImg1 = indicatorImg1;\n    }\n\n    public String getIndicatorImg2() {\n        return indicatorImg2;\n    }\n\n    public void setIndicatorImg2(String indicatorImg2) {\n        this.indicatorImg2 = indicatorImg2;\n    }\n\n    public String getIndicatorGravity() {\n        return indicatorGravity;\n    }\n\n    public void setIndicatorGravity(String indicatorGravity) {\n        this.indicatorGravity = indicatorGravity;\n    }\n\n    public String getIndicatorPosition() {\n        return indicatorPosition;\n    }\n\n    public void setIndicatorPosition(String indicatorPosition) {\n        this.indicatorPosition = indicatorPosition;\n    }\n\n    public float getIndicatorGap() {\n        return indicatorGap;\n    }\n\n    public void setIndicatorGap(float indicatorGap) {\n        this.indicatorGap = indicatorGap;\n    }\n\n    public float getIndicatorHeight() {\n        return indicatorHeight;\n    }\n\n    public void setIndicatorHeight(float indicatorHeight) {\n        this.indicatorHeight = indicatorHeight;\n    }\n\n    public float getIndicatorMargin() {\n        return indicatorMargin;\n    }\n\n    public void setIndicatorMargin(float indicatorMargin) {\n        this.indicatorMargin = indicatorMargin;\n    }\n\n    public int getInfiniteMinCount() {\n        return infiniteMinCount;\n    }\n\n    public void setInfiniteMinCount(int infiniteMinCount) {\n        this.infiniteMinCount = infiniteMinCount;\n    }\n\n    public float getPageRatio() {\n        return pageRatio;\n    }\n\n    public void setPageRatio(float pageRatio) {\n        this.pageRatio = pageRatio;\n    }\n\n    public float gethGap() {\n        return hGap;\n    }\n\n    public void sethGap(float hGap) {\n        this.hGap = hGap;\n    }\n\n    public float getScrollMarginLeft() {\n        return scrollMarginLeft;\n    }\n\n    public void setScrollMarginLeft(float scrollMarginLeft) {\n        this.scrollMarginLeft = scrollMarginLeft;\n    }\n\n    public float getScrollMarginRight() {\n        return scrollMarginRight;\n    }\n\n    public void setScrollMarginRight(float scrollMarginRight) {\n        this.scrollMarginRight = scrollMarginRight;\n    }\n\n    public float getItemRatio() {\n        return itemRatio;\n    }\n\n    public void setItemRatio(float itemRatio) {\n        this.itemRatio = itemRatio;\n    }\n\n    public float getIndicatorRadius() {\n        return indicatorRadius;\n    }\n\n    public void setIndicatorRadius(float indicatorRadius) {\n        this.indicatorRadius = indicatorRadius;\n    }\n\n    public String getIndicatorColor() {\n        return indicatorColor;\n    }\n\n    public void setIndicatorColor(String indicatorColor) {\n        this.indicatorColor = indicatorColor;\n    }\n\n    public String getDefaultIndicatorColor() {\n        return defaultIndicatorColor;\n    }\n\n    public void setDefaultIndicatorColor(String defaultIndicatorColor) {\n        this.defaultIndicatorColor = defaultIndicatorColor;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/CellType.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class CellType {\n\n    public static final String TYPE_CONTAINER_FLOW = \"container-flow\";\n\n    public static final String TYPE_CONTAINER_1C_FLOW = \"container-oneColumn\";\n\n    public static final String TYPE_CONTAINER_2C_FLOW = \"container-twoColumn\";\n\n    public static final String TYPE_CONTAINER_3C_FLOW = \"container-threeColumn\";\n\n    public static final String TYPE_CONTAINER_4C_FLOW = \"container-fourColumn\";\n\n    public static final String TYPE_CONTAINER_5C_FLOW = \"container-fiveColumn\";\n\n    public static final String TYPE_CONTAINER_ON_PLUSN = \"container-onePlusN\";\n\n    public static final String TYPE_CONTAINER_FLOAT = \"container-float\";\n\n    public static final String TYPE_CONTAINER_BANNER = \"container-banner\";\n\n    public static final String TYPE_CONTAINER_SCROLL = \"container-scroll\";\n\n    public static final String TYPE_CONTAINER_STICKY = \"container-sticky\";\n\n    public static final String TYPE_CONTAINER_WATERFALL = \"container-waterfall\";\n\n    public static final String TYPE_CONTAINER_FIX = \"container-fix\";\n\n    public static final String TYPE_CONTAINER_SCROLL_FIX = \"container-scrollFix\";\n\n    public static final String TYPE_CONTAINER_SCROLL_FIX_BANNER = \"container-scrollFixBanner\";\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/FiveColumnContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Container;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class FiveColumnContainer extends Container<FlowStyle> {\n\n    public FiveColumnContainer() {\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_5C_FLOW;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/FixContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class FixContainer extends OneChildContainer<FixStyle> {\n\n    public FixContainer() {\n        style = new FixStyle();\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_FIX;\n    }\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/FixStyle.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Style;\n\n/**\n * Created by longerian on 2017/11/14.\n */\npublic class FixStyle extends Style {\n\n    protected float x;\n\n    protected float y;\n\n    protected String align;\n\n    protected String showType;\n\n    public float getX() {\n        return x;\n    }\n\n    public void setX(float x) {\n        this.x = x;\n    }\n\n    public float getY() {\n        return y;\n    }\n\n    public void setY(float y) {\n        this.y = y;\n    }\n\n    public String getAlign() {\n        return align;\n    }\n\n    public void setAlign(String align) {\n        this.align = align;\n    }\n\n    public String getShowType() {\n        return showType;\n    }\n\n    public void setShowType(String showType) {\n        this.showType = showType;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/FloatContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class FloatContainer extends OneChildContainer<FixStyle> {\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_FLOAT;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/FlowContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Container;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class FlowContainer extends Container<FlowStyle> {\n\n    public FlowContainer() {\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_FLOW;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/FlowStyle.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Style;\n\n/**\n * Created by longerian on 2017/11/14.\n */\npublic class FlowStyle extends Style {\n\n    protected int column;\n\n    protected float vGap;\n\n    protected float hGap;\n\n    protected boolean autoExpand;\n\n    public int getColumn() {\n        return column;\n    }\n\n    public void setColumn(int column) {\n        this.column = column;\n    }\n\n    public float getvGap() {\n        return vGap;\n    }\n\n    public void setvGap(int vGap) {\n        this.vGap = vGap;\n    }\n\n    public void setvGap(float vGap) {\n        this.vGap = vGap;\n    }\n\n    public float gethGap() {\n        return hGap;\n    }\n\n    public void sethGap(int hGap) {\n        this.hGap = hGap;\n    }\n\n    public void sethGap(float hGap) {\n        this.hGap = hGap;\n    }\n\n    public boolean isAutoExpand() {\n        return autoExpand;\n    }\n\n    public void setAutoExpand(boolean autoExpand) {\n        this.autoExpand = autoExpand;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/FourColumnContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Container;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class FourColumnContainer extends Container<FlowStyle> {\n\n    public FourColumnContainer() {\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_4C_FLOW;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/OneChildContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Cell;\nimport com.alibaba.tac.sdk.tangram4tac.Container;\nimport com.alibaba.tac.sdk.tangram4tac.Style;\n\nimport java.util.List;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic abstract class OneChildContainer<T extends Style> extends Container<T> {\n\n    public void addChild(Cell child) {\n        addChild(child, -1);\n    }\n\n    public void addChild(Cell child, int index) {\n        if (items.isEmpty() && child != null) {\n            if (index < 0) {\n                items.add(child);\n            } else if (index == 0) {\n                items.add(0, child);\n            } else if (index > 0 && index < items.size()) {\n                items.add(index, child);\n            }\n        }\n    }\n\n    public void addChildren(List<Cell> children) {\n        addChildren(children, -1);\n    }\n\n    public void addChildren(List<Cell> children, int index) {\n        if (children != null && !children.isEmpty()) {\n            if (items.isEmpty()) {\n                if (children.size() > 0) {\n                    Cell child = children.get(0);\n                    if (index < 0) {\n                        items.add(child);\n                    } else if (index == 0) {\n                        items.add(0, child);\n                    } else if (index > 0 && index < items.size()) {\n                        items.add(index, child);\n                    }\n                }\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/OneColumnContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Container;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class OneColumnContainer extends Container<FlowStyle> {\n\n    public OneColumnContainer() {\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_1C_FLOW;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/OnePlusNContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Container;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class OnePlusNContainer extends Container<OnePlusNStyle> {\n\n    public OnePlusNContainer() {\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_ON_PLUSN;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/OnePlusNStyle.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Style;\n\n/**\n * Created by longerian on 2017/11/18.\n */\npublic class OnePlusNStyle extends Style {\n\n    protected float[] rows;\n\n    public void setRows(float[] rows) {\n        this.rows = rows;\n    }\n\n    public float[] getRows() {\n        return rows;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/ScrollContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Container;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class ScrollContainer extends Container<ScrollStyle> {\n\n    public ScrollContainer() {\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_SCROLL;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/ScrollFixBannerContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Container;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class ScrollFixBannerContainer extends Container<FixStyle> {\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_SCROLL_FIX_BANNER;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/ScrollFixContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class ScrollFixContainer extends OneChildContainer<FixStyle> {\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_SCROLL_FIX;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/ScrollStyle.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Style;\n\n/**\n * Created by longerian on 2017/11/15.\n */\npublic class ScrollStyle extends Style {\n\n    protected float pageWidth;\n\n    protected float pageHeight;\n\n    protected String defaultIndicatorColor;\n\n    protected String indicatorColor;\n\n    protected boolean hasIndicator;\n\n    protected String footerType;\n\n    protected boolean retainScrollState;\n\n    public float getPageWidth() {\n        return pageWidth;\n    }\n\n    public void setPageWidth(float pageWidth) {\n        this.pageWidth = pageWidth;\n    }\n\n    public float getPageHeight() {\n        return pageHeight;\n    }\n\n    public void setPageHeight(float pageHeight) {\n        this.pageHeight = pageHeight;\n    }\n\n    public String getDefaultIndicatorColor() {\n        return defaultIndicatorColor;\n    }\n\n    public void setDefaultIndicatorColor(String defaultIndicatorColor) {\n        this.defaultIndicatorColor = defaultIndicatorColor;\n    }\n\n    public String getIndicatorColor() {\n        return indicatorColor;\n    }\n\n    public void setIndicatorColor(String indicatorColor) {\n        this.indicatorColor = indicatorColor;\n    }\n\n    public boolean isHasIndicator() {\n        return hasIndicator;\n    }\n\n    public void setHasIndicator(boolean hasIndicator) {\n        this.hasIndicator = hasIndicator;\n    }\n\n    public String getFooterType() {\n        return footerType;\n    }\n\n    public void setFooterType(String footerType) {\n        this.footerType = footerType;\n    }\n\n    public boolean isRetainScrollState() {\n        return retainScrollState;\n    }\n\n    public void setRetainScrollState(boolean retainScrollState) {\n        this.retainScrollState = retainScrollState;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/StickyContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class StickyContainer extends OneChildContainer<StickyStyle> {\n\n    public StickyContainer() {\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_STICKY;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/StickyStyle.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Style;\n\n/**\n * Created by longerian on 2017/11/14.\n */\npublic class StickyStyle extends Style {\n\n    protected String sticky;\n\n    public String getSticky() {\n        return sticky;\n    }\n\n    public void setSticky(String sticky) {\n        this.sticky = sticky;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/ThreeColumnContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Container;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class ThreeColumnContainer extends Container<FlowStyle> {\n\n    public ThreeColumnContainer() {\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_3C_FLOW;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/TwoColumnContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Container;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class TwoColumnContainer extends Container<FlowStyle> {\n\n    public TwoColumnContainer() {\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_2C_FLOW;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/WaterFallContainer.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Container;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class WaterFallContainer extends Container {\n\n    public WaterFallContainer() {\n    }\n\n    @Override\n    public String getType() {\n        return CellType.TYPE_CONTAINER_WATERFALL;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/lib/WaterFallStyle.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.lib;\n\nimport com.alibaba.tac.sdk.tangram4tac.Style;\n\n/**\n * Created by longerian on 2017/11/14.\n */\npublic class WaterFallStyle extends Style {\n\n    protected float vGap;\n\n    protected float hGap;\n\n    protected float gap;\n\n    protected int column;\n\n    public float getvGap() {\n        return vGap;\n    }\n\n    public void setvGap(float vGap) {\n        this.vGap = vGap;\n    }\n\n    public float gethGap() {\n        return hGap;\n    }\n\n    public void sethGap(float hGap) {\n        this.hGap = hGap;\n    }\n\n    public float getGap() {\n        return gap;\n    }\n\n    public void setGap(float gap) {\n        this.gap = gap;\n        this.vGap = gap;\n        this.hGap = gap;\n    }\n\n    public int getColumn() {\n        return column;\n    }\n\n    public void setColumn(int column) {\n        this.column = column;\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/render/DefaultRender.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.render;\n\nimport com.alibaba.tac.sdk.tangram4tac.Cell;\nimport com.alibaba.tac.sdk.tangram4tac.FieldExcluder;\nimport com.alibaba.tac.sdk.tangram4tac.FieldNameMapper;\n\nimport java.lang.reflect.Array;\nimport java.lang.reflect.Field;\nimport java.util.*;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic class DefaultRender implements IRender<Cell, Map<String, Object>> {\n\n    private static Map<Class, Field[]> classFiledCache = new HashMap<Class, Field[]>();\n\n    private static Map<Class<?>, List<Class<?>>> typesCache = new HashMap<Class<?>, List<Class<?>>>();\n\n    private static Map<Field, FieldExcluder> fieldExcluderCache = new HashMap<Field, FieldExcluder>();\n\n    private static Map<Field, String> fieldNameMapCache = new HashMap<Field, String>();\n\n    public DefaultRender() {\n\n    }\n\n    @Override\n    public Map<String, Object> renderTo(Cell cell) {\n        return internalRenderForClass(cell);\n    }\n\n    private Map<String, Object> internalRenderForClass(Object object) {\n        Map<String, Object> outputData = new HashMap<String, Object>();\n        if (object != null) {\n            Class selfClass = object.getClass();\n            List<Class<?>> clazzes = lookupCellTypes(selfClass);\n            for (int i = 0, size = clazzes.size(); i < size; i++) {\n                Class<?> clazz = clazzes.get(i);\n                internalRenderFields(object, clazz, outputData);\n            }\n        }\n        return outputData;\n    }\n\n    private void internalRenderFields(Object object, Class clazz, Map<String, Object> output) {\n        Field[] selfFields = classFiledCache.get(clazz);\n        Field oneField;\n        String name;\n        Object value;\n        FieldNameMapper fieldNameMapper;\n        FieldExcluder fieldExcluder;\n        if (selfFields == null) {\n            selfFields = clazz.getDeclaredFields();\n            for (int i = 0 , length = selfFields.length; i < length; i++) {\n                oneField = selfFields[i];\n                oneField.setAccessible(true);\n                fieldExcluder = oneField.getAnnotation(FieldExcluder.class);\n                if (fieldExcluder != null) {\n                    fieldExcluderCache.put(oneField, fieldExcluder);\n                }\n                fieldNameMapper = oneField.getAnnotation(FieldNameMapper.class);\n                if (fieldNameMapper != null) {\n                    name = fieldNameMapper.key();\n                    if (name != null && name.length() > 0) {\n                        fieldNameMapCache.put(oneField, name);\n                    }\n                }\n            }\n            classFiledCache.put(clazz, selfFields);\n        }\n        for (int i = 0 , length = selfFields.length; i < length; i++) {\n            oneField = selfFields[i];\n            fieldExcluder = fieldExcluderCache.get(oneField);\n            if (fieldExcluder != null) {\n                continue;\n            }\n            if (fieldNameMapCache.containsKey(oneField)) {\n                name = fieldNameMapCache.get(oneField);\n            } else {\n                name = oneField.getName();\n            }\n            try {\n                value = oneField.get(object);\n                internalRenderField(name, value, output);\n            } catch (IllegalAccessException e) {\n            }\n        }\n    }\n\n    private void internalRenderField(String name, Object object, Map<String, Object> output) {\n        if (object != null) {\n            Object value = getFieldValue(object);\n            if (value != null) {\n                output.put(name, value);\n            }\n        }\n    }\n\n    private Object getFieldValue(Object object) {\n        Class oneFieldClazz = object.getClass();\n        if (isBasicType(object)) {\n            return getNonDefaultValueFromBasicType(object);\n        } else if (Collection.class.isAssignableFrom(oneFieldClazz)) {\n            Collection lists = (Collection) object;\n            List<Object> outputLists = new ArrayList<Object>();\n            Iterator<Object> itr = lists.iterator();\n            while (itr.hasNext()) {\n                Object item = itr.next();\n                Object value = getFieldValue(item);\n                if (value != null) {\n                    outputLists.add(value);\n                } else {\n                    outputLists.add(item);\n                }\n            }\n            if (outputLists.isEmpty()) {\n                return null;\n            } else {\n                return outputLists;\n            }\n        } else if (Map.class.isAssignableFrom(oneFieldClazz)) {\n            Map maps = (Map) object;\n            Map<String, Object> outputMaps = new HashMap<String, Object>();\n            Iterator<Object> itr = maps.keySet().iterator();\n            while (itr.hasNext()) {\n                Object key = itr.next();\n                Object item = maps.get(key);\n                Object value = getFieldValue(item);\n                if (value != null) {\n                    outputMaps.put(String.valueOf(key), value);\n                }\n            }\n            if (outputMaps.isEmpty()) {\n                return null;\n            } else {\n                return outputMaps;\n            }\n        } else if (oneFieldClazz.isArray()) {\n            int length = Array.getLength(object);\n            Collection lists = new ArrayList();\n            for (int a = 0; a < length; a++) {\n                lists.add(Array.get(object, a));\n            }\n            List<Object> outputLists = new ArrayList<Object>();\n            Iterator<Object> itr = lists.iterator();\n            while (itr.hasNext()) {\n                Object item = itr.next();\n                Object value = getFieldValue(item);\n                if (value != null) {\n                    outputLists.add(value);\n                } else {\n                    outputLists.add(item);\n                }\n            }\n            if (outputLists.isEmpty()) {\n                return null;\n            } else {\n                return outputLists;\n            }\n        } else {\n            return internalRenderForClass(object);\n        }\n    }\n\n    private List<Class<?>> lookupCellTypes(Class<?> selfClass) {\n        List<Class<?>> types = typesCache.get(selfClass);\n        if (types == null) {\n            types = new ArrayList<Class<?>>();\n            Class<?> clazz = selfClass;\n            while (clazz != null && !clazz.equals(Object.class)) {\n                types.add(clazz);\n                clazz = clazz.getSuperclass();\n            }\n            typesCache.put(selfClass, types);\n        }\n        return types;\n    }\n\n    private boolean isBasicType(Object object) {\n        return object instanceof Integer\n                || object instanceof Float\n                || object instanceof Double\n                || object instanceof Short\n                || object instanceof Long\n                || object instanceof String\n                || object instanceof Boolean;\n    }\n\n    private Object getNonDefaultValueFromBasicType(Object object) {\n        if (object instanceof Integer) {\n            if (((Integer) object).intValue() == 0) {\n                return null;\n            }\n        }\n        if (object instanceof Float) {\n            if (((Float) object).floatValue() == 0.0f) {\n                return null;\n            }\n        }\n        if (object instanceof Double) {\n            if (((Double) object).doubleValue() == 0.0) {\n                return null;\n            }\n        }\n        if (object instanceof Short) {\n            if (((Short) object).shortValue() == 0) {\n                return null;\n            }\n        }\n        if (object instanceof Long) {\n            if (((Long) object).longValue() == 0) {\n                return null;\n            }\n        }\n        if (object instanceof Boolean) {\n            if (((Boolean) object).booleanValue() == false) {\n                return null;\n            }\n        }\n        if (object instanceof String) {\n            if (((String) object).length() == 0) {\n                return null;\n            }\n        }\n        return object;\n    }\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/render/IRender.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.render;\n\n/**\n * Created by longerian on 2017/11/5.\n */\npublic interface IRender<I, O> {\n\n    O renderTo(I input);\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/utils/Pair.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.utils;\n\n/**\n * Created by longerian on 2017/10/31.\n */\npublic class Pair<F, S> {\n    public final F first;\n    public final S second;\n\n    public Pair(F first, S second) {\n        this.first = first;\n        this.second = second;\n    }\n\n    public boolean equals(Object o) {\n        if(!(o instanceof Pair)) {\n            return false;\n        } else {\n            Pair p = (Pair)o;\n            return objectsEqual(p.first, this.first) && objectsEqual(p.second, this.second);\n        }\n    }\n\n    private static boolean objectsEqual(Object a, Object b) {\n        return a == b || a != null && a.equals(b);\n    }\n\n    public int hashCode() {\n        return (this.first == null?0:this.first.hashCode()) ^ (this.second == null?0:this.second.hashCode());\n    }\n\n    public static <A, B> Pair<A, B> create(A a, B b) {\n        return new Pair(a, b);\n    }\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/tangram4tac/utils/Utils.java",
    "content": "package com.alibaba.tac.sdk.tangram4tac.utils;\n\nimport java.io.UnsupportedEncodingException;\nimport java.net.URI;\nimport java.net.URISyntaxException;\nimport java.net.URLDecoder;\nimport java.net.URLEncoder;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Scanner;\n\n/**\n * Created by longerian on 2017/11/14.\n */\npublic class Utils {\n\n    public static String format (\n            final List<Pair<String, String>> parameters,\n            final String encoding) {\n        final StringBuilder result = new StringBuilder();\n        for (final Pair<String, String> parameter : parameters) {\n            final String encodedName = encode(parameter.first, encoding);\n            final String value = parameter.second;\n            final String encodedValue = value != null ? encode(value, encoding) : \"\";\n            if (result.length() > 0)\n                result.append(PARAMETER_SEPARATOR);\n            result.append(encodedName);\n            result.append(NAME_VALUE_SEPARATOR);\n            result.append(encodedValue);\n        }\n        return result.toString();\n    }\n\n    public static List <Pair<String, String>> parse (final URI uri, final String encoding) {\n        List <Pair<String, String>> result = new ArrayList<Pair<String, String>>();\n        final String query = uri.getRawQuery();\n        if (query != null && query.length() > 0) {\n            parse(result, new Scanner(query), encoding);\n        }\n        return result;\n    }\n\n    private static final String PARAMETER_SEPARATOR = \"&\";\n\n    private static final String NAME_VALUE_SEPARATOR = \"=\";\n\n    public static void parse (\n            final List <Pair<String, String>> parameters,\n            final Scanner scanner,\n            final String encoding) {\n        scanner.useDelimiter(PARAMETER_SEPARATOR);\n        while (scanner.hasNext()) {\n            String nameValue = scanner.next();\n            if (nameValue == null || nameValue.length() == 0) {\n                continue;\n            }\n            int indexOfEq = nameValue.indexOf(NAME_VALUE_SEPARATOR);\n            if (indexOfEq == -1) {\n                continue;\n            }\n            String name = nameValue.substring(0, indexOfEq);\n            String value = nameValue.substring(indexOfEq + 1);\n            if ((value == null || value.length() == 0) || (name == null || name.length() == 0)) {\n                continue;\n            }\n            name = decode(name, encoding);\n            value = decode(value, encoding);\n            parameters.add(new Pair<String, String>(name, value));\n        }\n    }\n\n    public static URI createURI(\n            final String scheme,\n            final String host,\n            int port,\n            final String path,\n            final String query,\n            final String fragment) throws URISyntaxException {\n\n        StringBuilder buffer = new StringBuilder();\n        if (host != null) {\n            if (scheme != null) {\n                buffer.append(scheme);\n                buffer.append(\"://\");\n            } else {\n                buffer.append(\"//\");\n            }\n            buffer.append(host);\n            if (port > 0) {\n                buffer.append(':');\n                buffer.append(port);\n            }\n        }\n        if (path == null || !path.startsWith(\"/\")) {\n            buffer.append('/');\n        }\n        if (path != null) {\n            buffer.append(path);\n        }\n        if (query != null) {\n            buffer.append('?');\n            buffer.append(query);\n        }\n        if (fragment != null) {\n            buffer.append('#');\n            buffer.append(fragment);\n        }\n        return new URI(buffer.toString());\n    }\n\n    private static String decode (final String content, final String encoding) {\n        try {\n            return URLDecoder.decode(content,\n                    encoding != null ? encoding : \"UTF-8\");\n        } catch (UnsupportedEncodingException problem) {\n            throw new IllegalArgumentException(problem);\n        }\n    }\n\n    private static String encode (final String content, final String encoding) {\n        try {\n            return URLEncoder.encode(content,\n                    encoding != null ? encoding : \"UTF-8\");\n        } catch (UnsupportedEncodingException problem) {\n            throw new IllegalArgumentException(problem);\n        }\n    }\n\n}\n"
  },
  {
    "path": "tac-sdk/src/main/java/com/alibaba/tac/sdk/utils/TacIPUtils.java",
    "content": "package com.alibaba.tac.sdk.utils;\n\nimport java.net.*;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.Enumeration;\n\n/**\n * Created by changkun.hck on 2016/12/29.\n */\npublic class TacIPUtils {\n\n    private  static String staticIp;\n\n    private  static String staticHost;\n\n    static {\n        // ip init\n        try {\n            if(staticIp == null) {\n                staticIp = Inet4Address.getLocalHost().getHostAddress();\n            }\n        } catch (UnknownHostException var1) {\n            var1.printStackTrace();\n        }\n        // host init\n        try {\n            if(staticHost == null) {\n                staticHost = Inet4Address.getLocalHost().getHostName();\n            }\n        } catch (UnknownHostException var1) {\n            var1.printStackTrace();\n        }\n    }\n\n    public static String getLocalHostName() {\n        return staticHost;\n    }\n\n    public static String getLocalIp() {\n        return staticIp;\n    }\n\n\n    @Deprecated\n    private static Collection<InetAddress> getAllHostAddress() {\n        try {\n            Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();\n            Collection<InetAddress> addresses = new ArrayList<InetAddress>();\n\n            while (networkInterfaces.hasMoreElements()) {\n                NetworkInterface networkInterface = networkInterfaces.nextElement();\n                Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();\n                while (inetAddresses.hasMoreElements()) {\n                    InetAddress inetAddress = inetAddresses.nextElement();\n                    addresses.add(inetAddress);\n                }\n            }\n\n            return addresses;\n        } catch (SocketException e) {\n        }\n        return Collections.emptyList();\n    }\n\n    @Deprecated\n    public static Collection<String> getAllIpv4NoLoopbackAddresses() {\n        Collection<String> noLoopbackAddresses = new ArrayList<String>();\n        Collection<InetAddress> allInetAddresses = getAllHostAddress();\n        for (InetAddress address : allInetAddresses) {\n            if (!address.isLoopbackAddress() && address instanceof Inet4Address) {\n                noLoopbackAddresses.add(address.getHostAddress());\n            }\n        }\n        return noLoopbackAddresses;\n    }\n    @Deprecated\n    public static String getFirstNoLoopbackAddress() {\n        Collection<String> allNoLoopbackAddresses = getAllIpv4NoLoopbackAddresses();\n        return allNoLoopbackAddresses.iterator().next();\n    }\n\n}\n"
  }
]